我相信这很简单,我似乎找不到正确的方法来显示模型中列表中某个项目的显示名称。

我的简化模型:

public class PersonViewModel
{
    public long ID { get; set; }

    private List<PersonNameViewModel> names = new List<PersonNameViewModel>();

    [Display(Name = "Names")]
    public List<PersonNameViewModel> Names { get { return names; } set { names = value; } }
}

和名称:
public class PersonNameViewModel
{
    public long ID { get; set; }

    [Display(Name = "Set Primary")]
    public bool IsPrimary { get; set; }

    [Display(Name = "Full Name")]
    public string FullName { get; set; }
}

现在,我想制作一个表以显示一个人的所有名称,并获取DisplayNameFor FullName。明显,
@Html.DisplayNameFor(model => model.Names.FullName);

不会工作,并且
@Html.DisplayNameFor(model => model.Names[0].FullName);

如果没有名称,它将中断。是否有“最佳方法”在此处获取显示名称?

最佳答案

即使列表中没有项目,这实际上也有效:

@Html.DisplayNameFor(model => model.Names[0].FullName)

之所以有效,是因为MVC会解析表达式而不是实际执行它。这样,它就可以找到正确的属性和属性,而无需在列表中包含任何元素。

值得注意的是,甚至不需要使用参数(上面的model)。这也有效:
@Html.DisplayNameFor(dummy => Model.Names[0].FullName)

就像这样:
@{ Namespace.Of.PersonNameViewModel dummyModel = null; }
@Html.DisplayNameFor(dummyParam => dummyModel.FullName)

09-26 00:03
查看更多