我可以动态发布视图模型吗?

本文关键字:模型 视图 动态 布视图 我可以 | 更新日期: 2023-09-27 18:31:07

在 asp.net mvc3中,我想要一个通用方法,该方法将viewmodel对象从发送到数据库中的正确位置添加到数据库中。为此,我正在尝试传入已发布的模型。但是,我在动态上遇到了一些困难。我试过这个,但没有用:

视图:

(psuedo)
begin form aiming at Add
 fields
input type = submit

控制器操作

[HttpPost]
public ActionResult Add(dynamic model,...)

问题是模型永远不会被填充。隐藏字段是,但模型使用帮助程序定义的实际字段不会进入模型。我意识到仅仅将其命名为model很可能不会正确排列。我确定如果我强类型模型,例如(MyExplicitClass model,...)它会起作用,但这会破坏动态方法,因为我希望能够发送 class1、class2、class3、class5、class8、class13 等。

有没有办法让它工作,因为无论发送什么@model class21dynamic model(或等效)都会捕获该对象?

我可以动态发布视图模型吗?

No. 至少在不使用自定义模型绑定器的情况下不会。

您对模型绑定的工作原理存在根本性的误解。 您认为模型绑定基于视图中的@model工作。 这与事实相去甚远。 模型绑定通过查看操作方法中指定的参数来工作。

模型绑定程序所做的只是查看为操作方法指定的参数的类型,然后查看请求值(查询字符串或 post)并尝试匹配它们。 如果找到匹配项,则会实例化该对象。

这里的关键是模型绑定器仅实例化在操作方法的参数中指定的对象。 什么对象是"动态"的? 它不知道。 因此,它不能创建任何类型。

编辑:

您可能会发现此问题很有用

多态模型绑定