我有一個簡單的MVC模式,像這樣:驗證失敗的 'ID' 字段
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字段是必需的。」
這是爲什麼發生?
Id
字段默認情況下被賦值爲0(因爲它應該),然後它將被傳遞到數據層以創建記錄,所以我沒有看到問題是什麼?
任何幫助,將不勝感激。
何時/何處將'Id'字段設置爲0? – brazilianldsjaguar 2013-02-26 16:52:05
您的ID字段是數據庫中的標識字段嗎? – TGlatzer 2013-02-26 16:53:09
使id爲空可能會解決這個問題,因爲MVC可能需要一個值類型(int)的值,但是如果id最初應該爲0(不僅僅是null),您可能需要等待更好的答案。 – 2013-02-26 16:54:00