簡體   English   中英

實體框架,Razor,數據庫優先:更改列用於外鍵下拉文本

[英]Entity Framework, Razor, DB first: Change column used for foreign key dropdown texts

我正在使用Razor控制器設置一個簡單的網站,以用作內部GUI與數據庫的各個部分進行接口。 在很大程度上,這很順利,但是,對於外鍵,顯然,被引用表的第一列(按字母順序排序時)成為默認表示(即,編輯時下拉框中顯示的內容)。

例如,我有一個Campaigns表,該表具有Companies的外鍵。 在顯示Campaigns.CompanyId時,我想使用一個Companies.Name列。 但是,Razor顯然會使用Companies.AccessKey (這非常難以理解)來自動代表第一個可用的公司。

我正在尋找一種方法來指定用於表示行的列,希望不更改自動生成的文件。

這讓我發瘋了,盡管我認為這是一個普遍的問題,但是由於某種原因,我的谷歌搜索沒有給出任何答案:(

我不知道從模型方面進行設置的方法,但是可以在視圖中解決。
更換

@Html.DropDownList("Fk_Company", String.Empty)

@Html.EditorFor(m => m.Company, "Company") // adapt namings to fit your needs

並將名為Company的局部視圖添加到/Views/Shared/EditorTemplates其中包含以下內容:

@model Company

@Html.DropDownFor(m => m.Name, m.GetValues())

這提供了有關如何定義自定義編輯器模板的非常簡單的概述(與顯示模板相同)。
如果您將模板命名為完全相同的類型,它甚至會自動被拾取,甚至可能不需要更改生成的視圖 (我不保證它可以使用DropDownList("Fk_Company", String.Empty)語法自動運行,但是為EditorFor )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM