我正在使用带有EF的MVC 3.0 我有一个包含自动增量1的标识列的表。现在我创建了一个仅用于FirstName的编辑视图,LastName和ID将是ReadOnly模式。现在我更改了名字和姓氏,然后按提交按钮,然后它会给我一个错误:
参数字典包含一个 参数'colID'的null条目 非可空类型'System.Int32' 方法'System.Web.Mvc.ActionResult 编辑(的Int32, CAFM.Business.Models.TabMasterViewModel)” 在 'CAFM.Web.Controllers.TabMasterController'。 可选参数必须是a 引用类型,可空类型或者是 声明为可选参数。 参数名称:参数
如果我将ID从RedaOnly设置为编辑
@Html.DisplayFor(model => model.ID)
到
@Html.EditorFor(model => model.ID)
然后它完美运作。
请提供宝贵的建议!
谢谢, Imdadhusen
答案 0 :(得分:3)
这很明显。当您将编辑内容发布回服务器时,它不会发布Id,因为Id不在任何HTML控件中 - 它只是一个文本。因此,您无法创建有效的实体进行保存。您必须始终将Id发回(例如在隐藏字段中),并进行一些验证,即Id未被更改,或者该用户仍有权更改记录。