好的,所以从MVC3迁移到MVC4之后我遇到了一个有趣的问题。 我们有一个带有以下签名的控制器方法:
public ActionResult Delete(Guid[] items)
这在MVC3中运行良好,但在升级到MVC4后停止工作 - items数组始终为空。我意识到在MVC4中我将不得不使用ICollection来使其工作:
public ActionResult Delete(ICollection<Guid> items)
这是一个突破性的变化吗?或者第一种方法并不是一种真正适合做事的方法,只是在MVC3中作为一个侥幸?
发布的数据看起来非常简单,如下所示:
items=52b37b94-1f53-4981-a698-9eb6eca30861&items=d2f8c5e5-4e04-4a97-8efd-643a4e87e48b
使用jQuery($ .post)
发布答案 0 :(得分:0)
好的,我弄清楚发生了什么。我开始创建一个全新的MVC4项目来创建一个vanilla测试用例,并且绑定适用于阵列和Guids集合。
挖掘后我意识到在升级过程中我们还将autofac DI容器从2.5版升级到3.0版。某些内部组件可能已更改,默认情况下已启用操作注入。
显然,动作注射会干扰模型绑定。