我可以动态发布视图模型吗?
本文关键字:模型 视图 动态 布视图 我可以 | 更新日期: 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 class21
,dynamic model
(或等效)都会捕获该对象?
No. 至少在不使用自定义模型绑定器的情况下不会。
您对模型绑定的工作原理存在根本性的误解。 您认为模型绑定基于视图中的@model工作。 这与事实相去甚远。 模型绑定通过查看操作方法中指定的参数来工作。
模型绑定程序所做的只是查看为操作方法指定的参数的类型,然后查看请求值(查询字符串或 post)并尝试匹配它们。 如果找到匹配项,则会实例化该对象。
这里的关键是模型绑定器仅实例化在操作方法的参数中指定的对象。 什么对象是"动态"的? 它不知道。 因此,它不能创建任何类型。
编辑:
您可能会发现此问题很有用
多态模型绑定