1

好的,所以在从 MVC3 迁移到 MVC4 之后,我遇到了一个有趣的问题。我们有一个具有以下签名的控制器方法:

public ActionResult Delete(Guid[] items)

这在 MVC3 中效果很好,但在升级到 MVC4 后停止工作 - 项目数组始终为空。我意识到在 MVC4 中我必须使用 ICollection 来使其工作:

public ActionResult Delete(ICollection<Guid> items)

这是一个突破性的变化吗?或者第一种方法在 MVC3 中只是作为侥幸的一种做事的正确方法?

发布的数据看起来很简单,如下所示:

items=52b37b94-1f53-4981-a698-9eb6eca30861&items=d2f8c5e5-4e04-4a97-8efd-643a4e87e48b

并使用 jQuery ($.post) 发布

4

1 回答 1

0

好的,我知道发生了什么。我开始了全新的 MVC4 项目来创建一个香草测试用例,并且绑定对于 Guid 的数组和集合都正常工作。

经过挖掘,我意识到在升级过程中,我们还将 autofac DI 容器从 2.5 版本升级到了 3.0。某些内部结构可能已更改,并且默认情况下启用了动作注入。

显然动作注入干扰了模型绑定。

于 2013-07-17T02:28:24.173 回答