Я создаю кучу страниц Razor для поддержки справочных таблиц. Базовая структура в контексте данных такова:MVC/Razor DisplayAttribute при использовании наследования
public class RefTableBase {
public int Id {get;set;}
public string Value {get;set;}
}
public class UserType: RefTableBase {}
public class ReferenceType: RefTableBase {}
Рабочие места для строительных лесов Razor работают правильно. Тем не менее, когда у меня есть класс, который вызывает таблицы с ужасом, страницы не отображают то, что я ожидаю.
public class SomethingImportant {
public int Id {get;set;}
public string Name {get;set;}
public int UserTypeId {get;set;}
public virtual UserType UserType {get;set;}
public int ReferenceTypeId {get;set;}
public virtual ReferenceType ReferenceType {get;set;}
}
Когда index.cshtml страница scaffolded, заголовки таблицы выглядит следующим образом:
@model IEnumerable<Models.SomethingImportant>
<table class="table">
<tr>
<th>@Html.DisplayNameFor(model => model.Id)</th>
<th>@Html.DisplayNameFor(model => model.Name)</th>
<th>@Html.DisplayNameFor(model => model.UserType.Value)</th>
<th>@Html.DisplayNameFor(model => model.ReferenceType.Value)</th>
Но когда страница фактически отображаются в браузере, заголовки столбцов показывают
Id Name Value Value
Когда я хочу:
Id Name User Type Reference Type
Я попытался использовать DisplayAttribute для членов класса, но это не сработало.
public class SomethingImportant {
// ...........
[Display(Name="User Type")]
public int UserTypeId {get;set;}
public virtual UserType UserType {get;set;}
// ...........
}
Вне пропуска Наследование и фактически установив DisplayAttribute для всех и каждого класса в производных классах, есть ли способ я могу получить его, чтобы показать, как я хочу?
я должен был бы быть '@ Html.DisplayNameFor (модель => model.UserType)' и 'DisplayAttribute' применяется к' UserType' –
UserType недвижимость в SomethingImportant не Disply атрибут – DanielVorph
просто удалить .Value из них две последние строки. (т. е. model.UserType.Value -> model.UserType) –