我刚刚在我的 ASP.NET MVC 4 应用程序中遇到了一个奇怪的问题。我创建了一个包含对象的实体框架模型A:

属性PK是一个 int,ID而是一个 GUID。
然后我尝试将ID' As 的编辑页面添加为可编辑字段。使用@Html.EditorFor()or@Html.TextBoxFor()时,结果文本框中的值是PK属性的值,而不是ID。正确使用将@Html.DisplayFor()显示ID为 GUID。
代码:
<div class="editor-label">
@Html.LabelFor(model => model.ID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ID)
@Html.ValidationMessageFor(model => model.ID)
</div>
<div>
@Html.TextBoxFor(model => model.ID)
</div>
<div>
@Html.DisplayFor(model => model.ID)
</div>
结果:

在玩了一会儿之后,我决定简单地更改ID属性的名称。编辑字段立即开始显示正确的 GUID 值。
是什么导致了这种行为?是ID实体框架中主键的保留属性名称,还是与某些 MVC 命名约定(以 的样式xxxController)冲突?