Razor页面如何找到DisplayNameFor中的字段?
How can Razor page find the field in DisplayNameFor?
我很惊讶为什么下面的 table 能正确找到名字。
@model IEnumerable<Member>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<tr>
...
我设置的模型是 Member 类型的数组,所以模型没有 属性 LastName。列表中的一个元素可以!不应该是
<th>
@Html.DisplayNameFor(model => model.First().LastName)
</th>
直到我将视图模型更改为
,我才注意到这一点
public class IndexVm
{
public IEnumerable<Member> Members { get; set; }
}
并尝试
<th>
@Html.DisplayNameFor(model => model.Members.LastName)
</th>
这停止了工作,当我调查时,我意识到我可以找到原因。不过,我不明白它以前是如何工作的...
- 谁能解释一下这是怎么回事?
- 下面是我的新视图模型的唯一选项吗?
如果列表为空,计算机如何知道要显示什么?
@Html.DisplayNameFor(模型 => model.Members.FirstOrDefault()?.LastName)
好迷茫...
DisplayNameFor
显示 属性 的名称或 property.For
的显示属性中定义的字符串
@Html.DisplayNameFor(model => model.LastName)
,因为 model
在 lambda 表达式中的类型是 Member
而不是 IEnumerable<Member>
。
你可以使用
@Html.DisplayNameFor(model => model.Members.FirstOrDefault().LastName)
即使 FirstOrDefault()
将 return null,这仍然有效,因为它在内部使用来自 lambda 表达式的元数据,LastName
属性 本身未被访问。
如果 Members 是列表 IList<Member>
,您也可以使用 Members[0]
@Html.DisplayNameFor(model => model.Members[0].LastName)
参考 and here.
我很惊讶为什么下面的 table 能正确找到名字。
@model IEnumerable<Member>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<tr>
...
我设置的模型是 Member 类型的数组,所以模型没有 属性 LastName。列表中的一个元素可以!不应该是
<th>
@Html.DisplayNameFor(model => model.First().LastName)
</th>
直到我将视图模型更改为
,我才注意到这一点public class IndexVm
{
public IEnumerable<Member> Members { get; set; }
}
并尝试
<th>
@Html.DisplayNameFor(model => model.Members.LastName)
</th>
这停止了工作,当我调查时,我意识到我可以找到原因。不过,我不明白它以前是如何工作的...
- 谁能解释一下这是怎么回事?
- 下面是我的新视图模型的唯一选项吗?
如果列表为空,计算机如何知道要显示什么?
@Html.DisplayNameFor(模型 => model.Members.FirstOrDefault()?.LastName)
好迷茫...
DisplayNameFor
显示 属性 的名称或 property.For
@Html.DisplayNameFor(model => model.LastName)
,因为 model
在 lambda 表达式中的类型是 Member
而不是 IEnumerable<Member>
。
你可以使用
@Html.DisplayNameFor(model => model.Members.FirstOrDefault().LastName)
即使 FirstOrDefault()
将 return null,这仍然有效,因为它在内部使用来自 lambda 表达式的元数据,LastName
属性 本身未被访问。
如果 Members 是列表 IList<Member>
,您也可以使用 Members[0]
@Html.DisplayNameFor(model => model.Members[0].LastName)
参考