我遇到这种情况:
我有一个控制器,用一个具有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中的属性。 无法改变背景?
答案 0 :(得分:0)
我找到了解决问题的方法,使用部分视图来更改帮助程序的上下文,然后代码变为:
foreach (var item in Model.Entities)
{
@Html.Partial ("_Rows", item)
}
并在部分视图中:
foreach (string column in ((TEntity)Model).ScaffoldColumns)
{
@Html.Editor(column)
}