我刚刚在ASP.NET MVC 4应用程序中遇到了一个奇怪的问题。我创建了一个实体框架模型,其中包含对象A
:
属性PK
是一个int,而ID
是一个GUID。
然后我尝试将ID
添加到A
的编辑页面作为可编辑字段。使用@Html.EditorFor()
或@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命名约定冲突(格式为{{ 1}})?
答案 0 :(得分:2)
默认实体将假设ID是您的PK。您可以更改此w / Fluent API。这就是改变名称的原因。
以下是一篇关于使用流畅的http://msdn.microsoft.com/en-us/data/jj591617.aspx
配置映射的精彩文章