Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对于只有在运行时才知道的类型的对象,使用Html.Editor()助手的正确方法是什么_C#_Asp.net_Asp.net Mvc_Entity Framework_Razor - Fatal编程技术网

C# 对于只有在运行时才知道的类型的对象,使用Html.Editor()助手的正确方法是什么

C# 对于只有在运行时才知道的类型的对象,使用Html.Editor()助手的正确方法是什么,c#,asp.net,asp.net-mvc,entity-framework,razor,C#,Asp.net,Asp.net Mvc,Entity Framework,Razor,我的处境是: 我有一个控制器,它使用具有DbSet(通用)类型属性的模型初始化视图: 现在在视图中,我希望以这种方式循环实体属性: foreach (var item in Model.Entities) { foreach (var columnName in Model.Columns){      @ Html.Editor ("item."+columnName) } } 但我只是得到一个空的文本框 正确的方法是什么 我的目的: 我的目标是创建一个控制器,

我的处境是:

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

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

foreach (var item in Model.Entities)
{
     foreach (var columnName in Model.Columns){
          @ Html.Editor ("item."+columnName)
     }
}
但我只是得到一个空的文本框

正确的方法是什么

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

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

我找到了问题的解决方案,使用PartialView更改帮助程序的上下文,代码将变为:

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

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

加载泛型集,然后尝试为其中的每个项获取非泛型属性的目的是什么?你太过分了。目的是创建类似动态数据的内容
我想以这种方式循环实体属性
为什么需要这样做。MVC有一个编辑器模板。简单使用。谢谢Erik,很好的教程!
foreach (string column in ((TEntity)Model).ScaffoldColumns)
{
    @Html.Editor(column)
}