在asp.net mvc3中,我希望有一个泛型方法,它可以将视图模型对象添加到数据库中,从该对象发送到数据库中的正确位置。为了做到这一点,我尝试传入已发布的模型。然而,我在动态地做这件事上有一点困难。我试过了,但不起作用:
查看:
(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 (或等效物)都会捕获该对象?
发布于 2012-04-16 05:31:41
不是的。至少在不使用自定义模型绑定器的情况下不会。
你对模型绑定的工作方式有一个根本性的误解。您认为模型绑定是基于视图中的@model工作的。这与事实大相径庭。模型绑定通过查看action方法中指定的参数来工作。
模型绑定器所做的就是查看为操作方法指定的参数的类型,然后查看请求值( querystring或post)并尝试匹配它们。如果找到匹配项,它会实例化该对象。
这里的关键是模型绑定器只实例化action方法的参数中指定的对象。什么是“动态”对象?它不知道。因此它不能创建任何类型。
编辑:
你可能会发现这个问题很有用
https://stackoverflow.com/questions/10166271
复制相似问题