我想在集合中动态编写列名。我的收藏是在ViewBag和ViewData中。
我正在尝试
@{foreach (var item in ViewData["example"] as List<exampleList> )
{
<h1>@item["column" + column_id]</h1>
和item [在上面的代码中给出错误。
我也尝试了
@{foreach (var item in ViewBag.example )
{
<h1>@item.(column + column_id)</h1>
也行不通。
我只想在h1中自己编写列名。我不想让intellisense为我选择。在我的表格的每一行末尾都有语言后缀。
,例如name_fr,name_de,name_en
我只想在那里带来文化代码。例如:name + culture code。
如果我输入@ item.name_fr它有效。但是我想把它放在那里&#34; fr&#34;动态。
exampleList只是由Ado.net实体数据模型创建的类。这堂课没问题。这是一个简单的课程。它没有任何数据注释。
错误是&#34;无法将[]索引应用于&#34;
类型的表达式我的错误是什么?我想要得到的是否可能?
答案 0 :(得分:1)
你根本做不到,如果你真的想通过使用属性名作为字符串来加载对象的某些属性,你需要使用反射。
但是我建议不要这样做,使用反射来获取视图线程中的属性值可能是一个很大的性能损失。
更好的方法是使用Dictionary
来实现此目的。在那里,您可以使用字符串存储值并获取它。
<强>演示强>
Dictionary<string,object> d = new Dictionary<string,object>();
d.Add("name_fr",name_fr) ;
d.Add("name_de",name_de) ;
d.Add("name_en",name_en) ;
并且在视野中:
<h1>@item.YourDictionaryProperty[column +"_"+ column_id]</h1>
希望它有意义。