次のような単純な MVC モデルがあります。
public class SomeClass
{
public int Id { get; set; }
[Required(ErrorMessage = "Please provide a name for the blah blah blah")]
public string Name { get; set; }
}
...そして、私は次のようなビューを持っています(簡略化):
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CompanyName.Web.Models.SomeClassViewModel>" %>
<form method="post" action="/someclass/add">
<%=Html.HiddenFor(m => m.SomeClass.Id)%>
<div>
<%=Html.LabelFor(m => m.SomeClass.Name)%>
<%=Html.TextBoxFor(m => m.SomeClass.Name, new { @class = "form-medium" })%>
</div>
</form>
ModelState
フォームの送信時に、コントローラーは次のように検証します。
[HttpPost]
public ActionResult Add(Models.SomeClassViewModel model)
{
if (ModelState.IsValid)
{
...
}
}
次のモデル検証エラーが発生します
「ID フィールドは必須です。」
なぜこれが起こっているのですか?
フィールドはデフォルトで 0 に割り当てられ(Id
当然のことですが)、レコード作成のためにデータ層に渡されるため、何が問題なのかわかりません。
どんな助けでも大歓迎です。