asp.net-mvc – ASP.NET MVC路由冲突 – 输入变量的null值
|
我不知道为什么我的路线有冲突.我在我的Global.asax文件中有这些: routes.MapRoute(
"CustomerView","{controller}/{action}/{username}",new { controller = "Home",action = "Index",username = "" }
);
routes.MapRoute(
"Default","{controller}/{action}/{id}",id = "0" }
);
到目前为止,一切都运行良好,除非我创建一个控制器动作,如下所示: public ActionResult MyAction(int id)
{
//Do stuff here
return View();
}
当我尝试通过http://mydomain/MyController/MyAction/5查看它时,我得到:
向我建议id值没有被正确读取.当然enoguh,当我交换周围的路线顺序它工作正常.到目前为止,我的(理所当然有限的)理解是,如果路由中指定的变量名与控制器动作定义中指定的变量名匹配,则它将假定一个不管顺序.显然我错了.交换订单会导致其他控制器操作中断.在这种情况下,处理我的路线的正确方法是什么? 解决方法你的例子的问题是匹配发生在第一条路线上,它看到“5”作为用户名参数.您可以使用约束来限制每个参数接受的值,以实现您想要的效果.由于接受Id的“默认”路由比“CustomerView”路由更具限制性,因此我首先列出“默认”路由,并对Id参数进行约束:routes.MapRoute(
"Default",id = "0" },new { id = @"d+" }
);
如果Id是整数值,这将导致第一个路径仅匹配.然后,所有其他请求将进入“CustomerView”路由,该路由将获取没有整数作为第三个参数的任何其他请求. 查看Creating a Route Constraint以获取约束的解释. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Asp.Net MVC 301重定向
- asp.net – 如何预编译Web应用程序项目?
- asp.net-core – RemoteIpAddress始终为null
- asp.net – Url重写与路由
- asp.net-mvc – 使用自定义格式的ASP.NET MVC ViewModel映射
- asp.net-mvc – LabelFor和TextBoxFor不生成相同的id
- asp.net-mvc-3 – ASP.Net MVC 3 Razor Concatenate String
- asp.net-mvc – 自定义HtmlHelper呈现文本而不是标记
- asp.net-mvc – MVC4上的服务堆栈
- ASP.NET MVC 4和会话安全漏洞
- asp.net-mvc – 用于拆分日期时间字段的ASP.NET
- asp.net-mvc – 何时公开IEnumerable而不是IColl
- 是否可以使Page.IsPostBack独立于ASP.net而变为真
- asp.net-mvc – ASP.Net Html.DropDownList未选择
- asp.net – 为什么aspx代码隐藏文件被声明为部分
- ASP.Net – 在负载平衡环境中处理会话数据?
- ASP.Net文本框从右到左
- asp.net-mvc – 在VS2012中调试MVC应用程序尝试启
- asp.net-mvc – 找不到与Web API中的请求URI匹配
- asp.net – ReportViewer – 隐藏PDF导出
