我在名为“ReportController”的 Controller 中有一个像这样的 MVC 操作:
[HttpGet]
public virtual ActionResult Index(int id, Dictionary<string,string> filtersVal = null)
{
...
}
当我尝试这样调用页面时:http://domain.com/report/index?id=1它正确地执行了操作,但使用 MVC 路由信息填充了“filerVal”参数,如下所示:
[0] = {[controller, report]} [1] = {[action, index]}
如何避免这种情况,使 filterVal 参数保持为空。
请注意:我们最近迁移到 MVC5 .. 它在 MVC3 中运行良好 另外:如果我像这样调用相同的操作: http://domain.com/report/index?id=2&filterVal[0].Key=136&filterVal[0].Value=1然后它在“filterVal”参数中具有正确的值。
有人可以建议我如何避免第一种情况吗?
谢谢。
最佳答案
如果你的路由表有这样的条目:
{controller}/{action}/{id}
,其中 {id}
是可选的,那么您应该使用 url 访问您的页面:
其中 xxx=yyy
和 aaa=bbb
成为 filtersVal
中的值。
关于c# - 为什么在 MVC5 中 Optional 参数值会自动填充路由数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27264349/