Asp.net mvc 4 MVC4正在覆盖特定的操作参数

Asp.net mvc 4 MVC4正在覆盖特定的操作参数,asp.net-mvc-4,Asp.net Mvc 4,MVC4目前确实给了我一些奇怪的表现 想象一下下面的代码: TestController.cs public class TestController : Controller { public ActionResult Index(Function function, string action) { return View(); } public class Function { public string Actio

MVC4目前确实给了我一些奇怪的表现

想象一下下面的代码:

TestController.cs

public class TestController : Controller
{
    public ActionResult Index(Function function, string action)
    {
        return View();
    }

    public class Function
    {
        public string Action { get; set; }
    }
}
看起来,当我通过浏览器(localhost:PORT/Test)直接调用URL时,Action属性会自动填充“Index”。 如果操作名为“mySuperDuperAction whichGetsInVokedQuiteOften”,则该方法名正好位于属性中

有人能解释一下MVC在这里做什么吗? 问题是,我当然想自己填充这些内容,例如通过AJAX查询。但是,如果MVC自己填充这个属性,就会破坏一些行为

当然,我可以重新命名我的财产,它会起作用,但发生的事情还是很有趣的

编辑


我可以理解,我的第二个参数string action用方法名填充。但是,MVC究竟为什么要绑定任何与它的请求值同名的属性/参数呢?

这是默认模型绑定器的问题。它将请求字段“映射”到类中的属性。有一篇文章描述了它是如何工作的,但对于这种情况,代码如下:

Action = Request["action"] //where of course Request["action"] equals to name of your action

你是说当你导航到
localhost/test
时,
function.Action
的值是“Index”?这正是我想说的。谢谢你的回答。查看我编辑的问题,了解我真正想知道的内容。