使用MVC创建col1,col2,col3,其中(1,2,3是动态生成的)

时间:2015-12-24 12:11:37

标签: asp.net-mvc-3 c#-4.0 model-view-controller

  • 1> .cs页面
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
}

问题:

  1. 我需要使用此模型在视图内循环

    2 - ; .cshtml页面(查看)

  2.  @{
         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}次ColName1ColValue1

1 个答案:

答案 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循环中使用的属性名称,以避免每次都查询它们。