将 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)
}
我现在的情况是:
我有一个控制器,它使用具有 属性 类型 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)
}