2015-10-20 75 views
3

我正在尝试仅显示适用于模型中特定项目的值。 我有列表,其中包含我想要显示的模型中的属性名称。这是我有(和不工作)的代码仅显示模型中的某些值

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)) 

所以我的问题是:“模式”是否可以给一个变量放置后?
我知道这可能是一个有点混乱,但我希望我已经提供了足够的信息,如果不是请随时要求更多。

+0

不清楚你问什么。 '@ H​​tml.DisplayFor(model => model.Name)'将显示'Name'的值不是_“显示所有字段”_ –

+0

对不起@StephenMuecke它确实是一个有点模糊,但我不想要名称在'(model => model.Name)'硬编码,因为有时我想显示的值会改变。 – Djeroen

+0

是你的模特吗?你需要某种反射来获取名称的属性值 – JamieD77

回答

0

如果没有确定订单,并且没有编写方法来按名称获取属性值。你可以这样写你的看法..

@{ 
    var attrList = ViewBag.attributes as List<Attribute>; 
} 
<dt>      
    @Html.DisplayNameFor(model => model.Name) 
</dt> 
@if (attrList.Any(a => a.Attributename == "Name")) 
{ 
    <dd> 
     @Html.DisplayFor(model => model.Name) 
    </dd> 
} 
etc.. 
+0

谢谢你的回答,但那不是我真正意思的,我很抱歉我的问题很难理解。事情是,我不想要model.'name'硬编码,'Name'在属性列表中被指定。然后在属性列表(例如'name','Amount_of_hours','ServerID')中的foreach项目中,它必须显示来自模型的值(这是来自数据库表格的项目) – Djeroen

相关问题