在MVC视图中使用Razor循环遍历Model属性



我有这个模型,它有很多属性

public class Task {
    public string Key { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    ....
}

我需要在视图中创建一个表来列出任务的所有属性。

同样的问题已经被问到了,但我不想使用ViewData:在视图中循环浏览视图模型属性

知道吗?

这对你有用吗?

@foreach(var task in Model) {
    <tr>
    @foreach(var property in typeof(Task).GetProperties()) {
        <th>@(property.GetValue(task, null))</th>
    }
    </tr>
}

您可能需要使用反射来获取属性。

像这样的

@model List<Task>
@if(Model.Any())
{
   var propArr = Model.Events[0].GetType().GetProperties();
   foreach (var ev in Model)
   {
      var p = ev.GetType().GetProperties();
      foreach (var propertyInfo in propArr)
      {
         <h4>@propertyInfo.Name</h4>     
         var val = propertyInfo.GetValue(ev, null);
         if (val != null)
         {
             <p>@val</p>
         }
      }        
    }
}

扩展到Steve Coopers示例:


    <table class="table table-bordered table-responsive table-hover">
                        @foreach (var item in Model.a)
                        {
                            <tr>
                               @foreach (var prop in typeof(a).GetProperties())
                               {
                                   <th>@(prop.Name)</th>
                               }
                            </tr>
                            <tr>
                                @foreach (var prop in typeof(a).GetProperties())
                                {
                                    <td>@(prop.GetValue(item, null))</td>
                                }
                            </tr>
                        }
                    </table>

请使用此

@foreach (var task in Model)
{    
    <tr>
        <td>
          @task.Title 
        </td>
    </tr>
}

等等用于其他属性。然后在你的控制器中,你返回一个任务列表,比如

`return View(your taskList);`

最新更新