0

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

想象一下下面的代码:

测试控制器.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-Property 会自动填充“索引”。如果操作将被命名为“MySuperDuperActionWhichGetsInvokedQuiteOften”,则该方法名将在属性中。

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

当然,我可以只重命名我的属性并且它会工作,但发生的事情仍然会很有趣。

编辑

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

4

1 回答 1

0

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

Action = Request["action"] //where of course Request["action"] equals to name of your action
于 2013-05-02T10:38:54.000 回答