【发布时间】:2016-01-19 16:53:35
【问题描述】:
我试图仅显示适用于模型中某个项目的值。 我有一个列表,其中包含我要显示的模型中的属性名称。这是我拥有的代码(但不起作用)
foreach (var item in ViewBag.attributes)
{
var attribute = item.Attributename;
var value = Model.Equals(attribute);
<dt>
@Html.DisplayNameFor(model => value)
</dt>
<dd>
@Html.DisplayFor(model => value)
</dd>
}
这样会起作用:
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
<dd>
@Html.DisplayFor(model => model.Name)
</dd>
但我不希望名称被硬编码,这就是为什么我将它放在我的列表中。
“名称”和其他一些值保存在属性列表中。
我实际上想要发生的事情是这样的:
@Html.DisplayFor(model => model.(ListItem.attributename))
所以我的问题是:是否可以在“模型”之后放置一个变量?
我知道这可能有点令人困惑,但我希望我提供了足够的信息,如果没有,请随时询问更多信息。
【问题讨论】:
-
不清楚您的要求。
@Html.DisplayFor(model => model.Name)将显示Name的值而不是“显示所有字段” -
对不起@StephenMuecke 它确实有点含糊,但我不想在
(model => model.Name)中硬编码名称,因为有时我想要显示的值会改变。 -
你的模型是一类吗?您需要某种反射来按名称获取属性值
-
@JamieD77 它实际上是我从数据库中获取的一个实体,但这几乎是一样的吧?
-
为什么不使用仅包含所需字段的 ViewModel?
标签: asp.net-mvc list model-view-controller view lambda