将Html.Editor()辅助对象与仅在运行时知道的类型的对象一起使用的正确方法是什么

时间:2015-01-21 17:25:39

标签: c# asp.net asp.net-mvc entity-framework razor

我遇到这种情况:

我有一个控制器,用一个具有DbSet类型(通用)属性的模型初始化一个视图:

private DbContext db = new DbContext ();
Model.Entities = db.Set (t.GetType ());
Model.Entities.Load();
return View (model);

现在在视图中我想以这种方式循环实体属性:

foreach (var item in Model.Entities)
{
     foreach (var columnName in Model.Columns){
          @ Html.Editor ("item."+columnName)
     }
}

但我只是得到一个空的文本框。

这样做的正确方法是什么?

我的目的: 我的目标是创建一个控制器,通过改变查询字符串中的表名(类似于动态数据)而不是为每个表(模型)创建单独的控制器/视图来创建CRUD操作所需的所有内容

修改 我理解这个问题:html.editor使用反射来查找Model中的属性。 无法改变背景?

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法,使用部分视图来更改帮助程序的上下文,然后代码变为:

foreach (var item in Model.Entities)
{
     @Html.Partial ("_Rows", item)
}

并在部分视图中:

foreach (string column in ((TEntity)Model).ScaffoldColumns)
{
    @Html.Editor(column)
}