Asp.net mvc 3 为什么动作参数不能与动作同名?

Asp.net mvc 3 为什么动作参数不能与动作同名?,asp.net-mvc-3,Asp.net Mvc 3,喂,我有一个动作 public ActionResult Details(MyModel details) 在这种情况下,详细信息将始终为null,因为名称与方法名称匹配。将它重命名为其他名称,它就可以正常工作。 对我来说,这是两个不同的东西——一个是url,另一个是POST数据。 有人看到MS解释了这一点吗?它不是空的,因为该操作被称为详细信息。它为空,因为在MyModel类中有一个名为Details的属性。因此,默认的模型绑定器不知道是要直接分配MyModel的Details属性还是MyM

喂,我有一个动作

public ActionResult Details(MyModel details)
在这种情况下,详细信息将始终为null,因为名称与方法名称匹配。将它重命名为其他名称,它就可以正常工作。 对我来说,这是两个不同的东西——一个是url,另一个是POST数据。
有人看到MS解释了这一点吗?

它不是空的,因为该操作被称为
详细信息。它为空,因为在
MyModel
类中有一个名为
Details
的属性。因此,默认的模型绑定器不知道是要直接分配
MyModel
Details
属性还是
MyModel
。因此,在模型类中重命名action参数名称或Details属性的名称。

这与MVC的约定有关。
这造成了一些限制。

我认为它是空的,因为参数名是“details”-MyDetails类型中没有details属性。@Eugene,我无法重现这个问题。你能提供一个完整的例子来重现它吗?视图模型、控制器和视图看起来如何?这个控制器的动作是如何调用的?嗯,我刚刚试着在家里复制它,它可以工作。。明天上班时我会再检查一遍。顺便说一句,如果parameter对象有一个名为parameter本身的属性,那么它将保持为null-这是什么原因?好的,我昨天可能没有足够的咖啡:)它有details属性。但是,为什么我不能有一个与参数名同名的属性?@Eugene,您不能这样做,因为当您发送带有
details.Foo=bar
的请求参数时,默认模型绑定器无法知道您是要设置
MyModel
Foo
属性,还是要设置
MyModel
details
属性。