我剛纔在ASP.NET MVC 4應用程序中遇到了一個奇怪的問題。我創建了一個實體框架模型,其中包括對象A
:爲什麼這個EF屬性返回另一個屬性的值?
物業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
Entity Framework中主鍵的保留屬性名稱,還是與某些MVC命名約定(樣式爲xxxController
)衝突?
默認實體將假定ID是你的PK。你可以改變這個w/Fluent API。這就是爲什麼改變名稱的原因。 – Botonomous
@鄧巴:請添加您的評論作爲答案。 OP不會得到更好的。 –
@ChrisPratt會做,謝謝Chris – Botonomous