public partial class TBL_FG_MENUS
{
public string ColName1{ get; set; }
public string ColName2{ get; set; }....ntimes
public string ColValue1{ get; set; }
public string ColValue2{ get; set; }....ntimes
}
问题:
我需要使用此模型在视图内循环
2 - ; .cshtml页面(查看)
@{
int i=1;
foreach(var item in Model)
{
<p>@item.ColName+i<p><br/>
i++;
}
i=1;
foreach(var item in Model)
{
<p>@item.ColValue+i<p><br/>
i++;
}
}
在这里,我想在循环中{n}次ColName1
,ColValue1
答案 0 :(得分:1)
一种可能性是稍微调整您的视图模型,以便它使用2个集合:
public partial class TBL_FG_MENUS
{
public IList<string> ColNames { get; set; }
public IList<string> ColValues { get; set; }
}
然后在你看来:
@foreach(var name in Model.ColNames)
{
<p>@name</p><br/>
}
@foreach(var value in Model.ColValues)
{
<p>@value</p><br/>
}
如果由于某种原因你不能使用集合,那么实现它的唯一方法是使用反射:
@foreach(var prop in Model.GetType().GetProperties().Where(p => p.Name.StartsWith("ColName")))
{
<p>@Html.Display(prop.Name)</p><br/>
}
@foreach(var prop in Model.GetType().GetProperties().Where(p => p.Name.StartsWith("ColValue")))
{
<p>@Html.Display(prop.Name)</p><br/>
}
显然,您应该记住,使用反射可能会对应用程序的性能产生负面影响,您可能需要考虑缓存foreach
循环中使用的属性名称,以避免每次都查询它们。