如何在嵌套模式访问DisplayNameFor
- 即:你如何访问DisplayNameFor嵌套模型
public class Invoice
{
public int InvoiceId { get; set; }
public string CustomerName { get; set; }
public string Contact { get; set; }
public IList<InvoiceItem> InvoiceItems { get; set; }
}
public class InvoiceItem
{
public int InvoiceItemId { get; set; }
public int InvoiceId { get; set; }
[Display(Name = "Item Heading")]
public string Item { get; set; }
[Display(Name = "Item Description")]
public string Description { get; set; }
public virtual Invoice Invoice { get; set; }
}
我可以通过嵌套项目环如下:
@foreach (var item in Model.InvoiceItems)
{
@Html.DisplayFor(modelItem => item.Item)
<br />
@Html.DisplayFor(modelItem => item.Description)
<br />
}
但我我怎么到:[Display(Name = "Item Heading")]
@Html.DisplayNameFor(modelItem => modelItem.Item)
我得到的错误:'inv5.Models.Invoice' does not contain a definition for 'Item' and no extension method 'Item' accepting a first argument of type 'inv5.Models.Invoice' could be found
个
谢谢,马克
哇,我从来没有注意到它,老老实实在它凝视几分钟的:))) –
Hi-point takere名称 - 但我想在进入循环之前显示DisplayNameFor。目前,如果我按照建议更改它,我会得到“名称'项'在当前上下文中不存在” - 谢谢,Mark – Mark
@fixit:在循环的上下文之外完全是另一回事。你可以尝试类似'modelItem.InvoiceItems.First()。Item'。如果列表为空,那么_might_会抛出一个异常,具体取决于DisplayNameFor的实际工作方式。 (我从来没有偷看它的内部) – David