【问题标题】:ASP.NET MVC List/Detail View Show Name ValuesASP.NET MVC 列表/详细视图显示名称值
【发布时间】:2011-03-23 15:42:20
【问题描述】:

在我的列表和详细信息视图中,我需要显示值(名称)而不是 id(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>
    }

【问题讨论】:

    标签: asp.net-mvc razor


    【解决方案1】:

    您是否考虑过使用 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 属性。

    然后在控制器中,我没有直接使用 Editable 对象作为我的模型,而是使用 ViewModel。

    您需要进行一些调整,以使您的所有参考都正确,但我已成功使用此模式多次。

    第,

    \ ^ / i l l

    【讨论】:

    • 我在我的 EntryViewModel 类中添加了public IEnumerable&lt;Staff&gt; Staff { get; set; },并在我的视图中添加了以下两行:@(item.AssignedToId == null ? "None" : Model.Staff.Where(m =&gt; m.StaffId == item.AssignedToId).Single().Name)@(item.EnteredById == null ? "None" : Model.Staff.Where(m =&gt; m.StaffId == item.EnteredById).Single().Name)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 2018-08-22
    • 1970-01-01
    相关资源
    最近更新 更多