Asp.net mvc 当模型是动态的时,MVC Razor如何在HttpPost上的控制器中获取模型

Asp.net mvc 当模型是动态的时,MVC Razor如何在HttpPost上的控制器中获取模型,asp.net-mvc,razor,Asp.net Mvc,Razor,我正在使用应用程序中的一个功能,在这个功能中,模型将是动态的,即可以显示任何设置数据,并且视图将根据他们单击的选项卡获取模型。我使用隐藏字段来存储设置名称,因为它们与模型名称相同。例如,如果tab1->Settings1,那么模型就是Settings1[已经存在于模型中]。因此我在视图中使用@Model dynamic,并使用@Html.EditotForModel根据模型绘制所需的UI。我的问题是,当我在编辑上执行HttpPost时,目前我正在使用FormCollection读取该页面上的数据

我正在使用应用程序中的一个功能,在这个功能中,模型将是动态的,即可以显示任何设置数据,并且视图将根据他们单击的选项卡获取模型。我使用隐藏字段来存储设置名称,因为它们与模型名称相同。例如,如果tab1->Settings1,那么模型就是Settings1[已经存在于模型中]。因此我在视图中使用@Model dynamic,并使用@Html.EditotForModel根据模型绘制所需的UI。我的问题是,当我在编辑上执行HttpPost时,目前我正在使用FormCollection读取该页面上的数据,当我在参数中声明模型名称时,它将为我获取该数据,但我不知道除了隐藏变量之外,哪个模型将返回,我需要它,因为模型验证因此问题而中断。感谢任何帮助或反馈?如果需要,我可以提供更多细节吗?以前有人讨论过这个问题吗?

动力学可能是好事,也可能是坏事。在受控庄园中具有公共接口的模型上使用它们是最好的

您可以查看不同的选项: 1. 您是否尝试过使action方法接受动态类型?这可能是最简单的方法

您可能需要设置强制转换辅助对象,以便根据隐藏字段将对象强制转换为正确的类型

二, 我在一些代码中也有类似的想法,但我创建了一个viewmetamodel类,该类将所有类型都包含为可空属性。My action方法接受此viewmetamodel类型并验证不为null的属性

与此一致,如果您的数据不是太大,那么您可以加载所有的设置选项卡,并使用Jquery应用选项卡

三, 您还可以为每个选项卡创建@sections或使用EditorForc=>c.settings。这样,每个选项卡将加载一个类型安全对象。您将需要为每个节点创建控制器

我会说为你选择最简单的方法。我希望这至少能给你一些想法