1

我正在使用 Razor 控制器建立一个简单的网络,用作内部 GUI,用于与我们的数据库的某些部分进行交互。在大多数情况下,这很顺利,但是当涉及到外键时,显然引用表的第一列(按字母顺序排序时)成为默认表示(即编辑时下拉框中显示的内容)。

例如,我有一个Campaigns表,它有一个外键CompaniesCompanies.Name我想在显示时使用一列Campaigns.CompanyId。然而,Razor 显然自动选择了第一个可用的,使用Companies.AccessKey(这很难理解)来代表公司。

我正在寻找某种方法来指定哪些列用于表示一行,希望不会更改自动生成的文件。

这让我发疯,虽然我认为这是一个常见问题,但出于某种原因,我的谷歌搜索并没有找到任何答案:(

4

1 回答 1

0

我不知道从模型方面设置它的方法,但可以在视图中解决。
更换

@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.

于 2014-04-23T10:21:54.483 回答