我有一個問題,可能只是由於我缺乏ASP.NET MVC的經驗,但它是我現在一直試圖解決的一個問題。ASP.NET MVC 4「創建」頁面提交結果無效ModelState
我有一個Code First數據庫設置,與asp.net上的第一個教程(http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4)沒有什麼不同。基本上,我遇到的問題是嘗試通過「創建」頁面在數據庫中創建新記錄時,ID設置爲0,這使得ModelState無效。
相關代碼: 型號:
public class Evt
{
public int ID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string GeoDescription { get; set; }
public decimal Longitude { get; set; }
public decimal Latitude { get; set; }
public DateTime Date { get; set; }
}
控制器:
[HttpPost]
public ActionResult Create(Evt evt)
{
if (ModelState.IsValid) // This is returning false because ID is 0
{
db.Evts.Add(evt);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(evt);
}
我可以根據要求添加視圖代碼爲好,但它基本上只是從模型中自動生成的代碼。
如果有人有任何想法,我將不勝感激!
感謝,
傑夫
編輯:我不引用ID在我的「創建」視圖所有,並添加它作爲一個隱藏的表單值沒有任何解決我的問題。
更新:我已經能夠規避錯誤加入
if (!ModelState.IsValid && evt.ID == 0) ModelState.Clear();
以上Create
的if
聲明,但此刪除所有客戶端驗證和顯然不夠理想。它確實表明,記錄在插入服務器後會正確插入一個增加的ID。
你不能瓚使實體類使ID爲空,因爲它是主鍵,並且主鍵不能爲空。 –