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をとにかく与えるので、それは関係ありません。どうすればこれを解決できますか?
どうもありがとうございました。