为什么可选参数值在MVC5中自动填充routedata?

Sha*_*rim 5 c# asp.net-mvc asp.net-mvc-5

我在名为"ReportController"的控制器中有这样的MVC动作:

[HttpGet]    
public virtual ActionResult Index(int id, Dictionary<string,string> filtersVal = null)
{
        ...
}
Run Code Online (Sandbox Code Playgroud)

当我尝试这样调用页面时:http: //domain.com/report/index?id = 1它正确地命中了操作,但用MVC路由信息填充"filerVal"参数,如下:

[0] = {[controller,report]} [1] = {[action,index]}

如何避免这种情况,以便filterVal参数保持为null.

请注意:我们最近搬到了MVC5 ..它在MVC3中工作正常另外:如果我调用相同的动作:http://domain.com/report/index?id = 2&filterVal [0] .Key = 136&filterVal [0] .Value = 1 然后在"filterVal"参数中具有正确的值.

任何人都可以建议我如何避免第一种情况?

谢谢.

小智 -1

如果您的路由表有这样的条目:

{controller}/{action}/{id}

,其中{id}是可选的,那么您应该使用 url 访问您的页面:

http://yourdomain.com/index/1?xxx=yyy&aaa=bbb

其中xxx=yyyaaa=bbb成为 中的值filtersVal