尽管数据库生成ID,但MVC ModelState错误“ID字段是必需的”

时间:2016-07-29 12:04:46

标签: asp.net-mvc model identity ef-database-first database-first

我首先使用数据库生成的ID字段创建了MVC应用程序数据库。

由于ID是由数据库生成的,因此在Model I中将'StoreGeneratedPattern'属性设置为'Identity'。

但是,当我提交“创建”表单时,我仍然收到ModelState错误“需要ID字段”。

我尝试重新启动解决方案,清理它,重新构建它。我知道我以前遇到过这个问题,所以如果我弄明白的话,我会在这里发布答案,以便将来我能找到它。

2 个答案:

答案 0 :(得分:0)

我在“创建”视图中添加了@Html.HiddenFor(model => model.ID)

因此虽然应用程序很乐意接受没有ID,但它不想接受null作为ID。

我刚刚删除了@ Html.HiddenFor并且它有效。

P.S。 “修改”视图需要@Html.HiddenFor(model => model.ID)来记住ID是什么。

答案 1 :(得分:0)

对于编辑视图,您需要具有id才能更新相应的行。

如果删除@ Html.HiddenFor(model => model.ID)=>每当您尝试编辑表单时,系统都会始终生成新行。

您可以按照以下代码重复使用同一视图进行创建/编辑

if (model != null)

{

    @Html.HiddenFor(model => model.ID)
}

=>当您尝试创建表单时 - 模型最初将为null,因此不会执行隐藏字段。

=>当您尝试编辑隐藏的字段存储您的ID。