我刚刚在我的 ASP.NET MVC 4 应用程序中遇到了一个奇怪的问题。我创建了一个包含对象的实体框架模型A
:
属性PK
是一个 int,ID
而是一个 GUID。
然后我尝试将ID
' A
s 的编辑页面添加为可编辑字段。使用@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
)冲突?