MVC 4正在覆盖特定的动作参数

时间:2013-05-02 10:31:28

标签: asp.net-mvc-4

MVC 4目前确实给我一些奇怪的行为。

想象一下以下代码:

TestController.cs

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

    public class Function
    {
        public string Action { get; set; }
    }
}

看来,当我直接通过浏览器调用URL(localhost:PORT / Test)时,Action-Property会自动填充“Index”。 如果Action被命名为“MySuperDuperActionWhichGetsInvokedQuiteOften”,那么这个Methodname就属于该属性。

有人可以解释一下MVC在做什么吗? 问题是,我当然希望自己填充这些东西,例如通过AJAX-Query。但是如果MVC单独填充此属性,则会破坏某些行为。

当然,我可以重新命名我的财产,它会起作用,但仍然会发生什么事情。

修改

我理解我的第二个参数,字符串动作,得到了方法名称。但是为什么MVC会将任何属性/参数绑定到它的请求值?

1 个答案:

答案 0 :(得分:0)

默认型号活页夹有问题。它将请求字段“映射”到您的类中的属性。有一篇文章MSDN描述了它是如何工作的,但对于这种情况,代码将是这样的:

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