我有一个问题可能只是由于我缺乏 ASP.NET MVC 的经验,但这是我现在一直在尝试解决的一个问题。
我有一个 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();
上面的if
语句Create
,但这会删除所有客户端验证,显然并不理想。它确实表明,一旦它到达服务器,记录就被正确地插入了一个递增的 ID。