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

What is the correct way to use Html.Editor() helper with objects of type known only at runtime

我现在的情况是:

我有一个控制器,它使用具有 属性 类型 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)
     }
}

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

执行此操作的正确方法是什么?

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

编辑 我理解这个问题:html.editor 使用反射在模型中找到 属性。 无法更改上下文?

我找到了解决问题的方法,使用 PartialView 更改助手的上下文,代码变为:

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

在分部视图中:

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