为什么可选参数值在 MVC5 中自动填充路由数据

本文关键字:填充 路由 数据 MVC5 参数 为什么 | 更新日期: 2023-09-27 18:32:57

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

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

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

[0] = {[控制器,报告]} [1] = {[操作,索引]}

我怎样才能避免这种情况,以便过滤器瓦尔参数保持为空。

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

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

谢谢。

为什么可选参数值在 MVC5 中自动填充路由数据

如果您的路由表包含如下条目:

{controller}/{action}/{id}

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

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

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