ASP.NET MVC列表/详细信息视图显示名称值

时间:2011-03-23 15:42:20

标签: asp.net-mvc razor

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

1 个答案:

答案 0 :(得分:1)

您是否考虑使用ViewModel模式来解决此问题?

我通常这样做的方法是创建一个ViewModel类,它包含页面的Model和保存查找列表值的属性。这是一个例子:

在我的观点中我有(剃刀):

@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而不是直接使用Editable对象作为我的模型。

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

HTH,

\ ^ /我l