1

ID を使用してモデルを検証する必要があるという問題がありますが、ID を表示したくないので、非表示フィールドに入れようとしました。

これが私のモデルです:

namespace MyApp.Models
{
    public class ObjInfo
    {
        /// <summary>
        /// Variable declaration.
        /// </summary>

        public int m_Id { get; set; }

        [Required(ErrorMessage = "Obj Name is required.")]
        [MaxLength(75)]
        [Display(Name = "Obj Name")]
        public string m_Name { get; set; }

        [Display(Name = "Obj Symbol")]
        public string m_SymbolText { get; set; }

(...) } }

問題のあるフィールドと別のフィールドのみを配置しました。私のモデルには、関連性のない他のデータもあります。

これが、このモデルの「作成」ビューです。

@model MyApp.Models.ObjInfo

@{
    ViewBag.Title = "Create";
}

<h2>Create New Obj</h2>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>OBJ</legend>

        @Html.HiddenFor(model => model.m_Id)

        <div class="editor-label">
            @Html.LabelFor(model => model.m_Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.m_Name)
            @Html.ValidationMessageFor(model => model.m_Name)
        </div>

        (...)

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Back to obj list", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

したがって、この obj の作成を確認すると、提供された ID のために ModelState は常に false を返しますが、この ID をユーザーに表示してはならず、管理上の問題で必要です。

簡単に言えば、隠しフィールドにデータがないと思います。しかし、私のBDはオブジェクトに適切なIDをとにかく与えるので、それは関係ありません。どうすればこれを解決できますか?

どうもありがとうございました。

4

2 に答える 2

0

アクションでモデルを取得するときは、Bind を使用して除外しm_Idます。

public ActionResult Example([Bind(Exclude = "m_Id")] ObjInfo objInfo)
{ 
    ...
}
于 2013-02-22T16:07:04.630 に答える
0

このパブリック int を試してみてください。m_Id { 取得; 設定; }

于 2013-02-26T17:48:11.660 に答える