Можно ли получить косвенный доступ к свойствам модели в представлении Razor? - PullRequest
0 голосов
/ 04 января 2012

Можно ли получить косвенный доступ к свойствам модели в представлении Razor?

Итак, вместо:

@Html.LabelFor(model => model.ColA)
@Html.LabelFor(model => model.ColB)
@Html.LabelFor(model => model.ColC)

Возможно ли что-то подобное следующему?

@foreach (var col in Model.Columns)
{
    @Html.LabelFor(model => model[col])
}

Я должен уточнить, что используемой моделью будет модель EF:

public class Record
{
    [Key, Display(Name="Column A")]
    public string ColA { get; set; }
    [Display(Name="Column B")]
    public string ColB { get; set; }
    [Display(Name="Column C")]
    public string ColC { get; set; }
}

public class RecordDbContext : DbContext
{
    public DbSet<Record> Records { get; set; }
}

Как мне реализовать «Столбцы», чтобы отобразить отображаемое имя для свойства?

Ответы [ 2 ]

0 голосов
/ 04 января 2012

Похоже, что ваша модель представления не адаптирована к требованиям вашего представления (то есть циклически перебирает некоторые значения и отображает метки вокруг них).Вы можете использовать коллекцию в вашей модели представления вместо свойств, поскольку это позволит вам зацикливаться:

public IEnumerable<SomeModel> Columns { get; set; }

Тогда в вашем представлении вместо написания цикла вы можете использовать шаблон отображения:

@model MyViewModel
@Html.DisplayFor(x => x.Columns)

и затем определите соответствующий шаблон, который будет автоматически отображаться для каждого элемента коллекции Columns (~/Views/Shared/DisplayTemplates/SomeModel.cshtml):

@model SomeModel
@Html.LabelFor(x => x.SomeModelProperty)
0 голосов
/ 04 января 2012

Если Model.Columns - это список, который почти работает. Вы должны изменить это, хотя:

@foreach (var col in Model.Columns)
{
    @Html.LabelFor(model => col)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...