ASP.NET MVC List / Detail View Показать имя Значения - PullRequest
0 голосов
/ 23 марта 2011

В моем списке и подробностях мне нужно показать значение (имя) вместо идентификатора (int). Подвох у меня только одна коллекция. Таким образом, отображается только имя EnteredBy. Model.Entries.Staff содержит только один элемент, но не все возможные совпадения.

// model
    public class Entry
    {
        [Display(Name = "Assigned To")]
        [Column(Name = "AssignedToId")]
        [Required(ErrorMessage = "You must select an individual.")]
        public int AssignedToId { get; set; }

        [Display(Name = "Entered By")]
        [Column(Name = "EnteredById")]
        [Required(ErrorMessage = "You must select an individual.")]
        public int EnteredById { get; set; }

        public virtual Staff Staff { get; set; }
    }

// view
    @foreach (var item in Model.Entries)
    {
            <td>
                @(item.AssignedToId == null ? "None" : item.Staff.Name))
            </td>
            <td>
                @(item.EnteredById == null ? "None" : item.Staff.Name)
            </td>
    }

1 Ответ

1 голос
/ 23 марта 2011

Рассматривали ли вы использование шаблона ViewModel для решения этой проблемы?

Обычно я делаю это, создавая класс ViewModel, который содержит и модель для страницы, и свойство, которое содержит значения списка для моего поиска. Вот пример:

По моему мнению (бритва):

@Html.DropDownListFor(model => model.ModelObject.leagueId, 
    new SelectList(Model.LeagueList, "leagueId", "leagueName"), 
         "--Select League--", "name='ModelObject.leagueId'")

ModelObject - это моя фактически редактируемая модель ...

Тогда в моей ViewModel у меня есть:

public LeagueSeasonRoList LeagueList { get; set; }
public Team ModelObject { get; set; }

В моей модели у меня есть свойство leagueId, которое связывает все это вместе.

Затем в контроллере вместо использования редактируемого объекта непосредственно в качестве модели я использую ViewModel.

Вам нужно будет сделать несколько корректировок, чтобы все ваши ссылки были правильными, но я много раз успешно использовал этот шаблон.

НТН,

\ ^ / i l l

...