0

MVC.Net を使用してリスト ジェネレーターに取り組んでいます。

次のようにクラスを作成ColumnInfo<T>し ました。Report<T>

public class ColumnInfo<T>
{
       public string Title{get;set;}
       public Func<T,object> Projector{get;set;}
}

public class Report<T>
{
   public IList<ColumnInfo<T>> Header{get;set;}
   public IQueryable<T> Result{get;set;} 
    ......
}

私がやりたいのは、部分的なビューでReport列挙してヘッダーと本体を作成することです。Header質問は次のとおりです。ジェネリックReport<T>をRazorビューに導入するにはどうすればよいですか? これが私が考えていることです:

@foreach(var row in Model.Result)
          {    
<tr>
    @foreach(var col in Model.Header)
    {

             <td>@col.Projector(row)</td>

    }
    </tr>
}
4

1 に答える 1

0

考えられる解決策は、ビューでジェネリック型として動的を使用することです。

@model Models.Report<dynamic>

コントローラーは、タイプを動的に設定する必要もあります。

public ActionResult Report()
{
    var viewModel = new Report<dynamic>();
    return View(viewModel);
}

この解決策があなたの問題に合っているかどうかはわかりませんが、単に設定することはできないことに気付きました:@model Models.Report<T>

于 2013-06-15T09:58:40.820 に答える