标签:out 数字 arp ace asp.net default 二义性 conf 数据
1.URL路径和路由配置中的路径对比
2.由上面的图,我们可以得出下面的一组路由数据
3.二义性
如果我们在Models中也新建一个Home控制器,那么你会发现重新刷新之后报错了。而这个是因为无法确定到底选择哪个控制器来响应该请求的缘故,当然你认为只要我们不新建重名的控制器就可以了,这样你只能控制你的项目中不出现,但是你却无法控制你加载的类库中不会出现,但是ASP.NET MVC已经提供了解决方案给我们,如下改正
RouteConfig.cs:
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, namespaces: new[] { "MvcStudy.Controllers" } ); } }
我们可以看到namespaces参数,通过将命名空间的名称传进去就可以起到排除二义性的问题了。
4.约束路由
上面我们有一个{id}用来捕获参数的,但是你也发现了它可以捕捉任何字符串等等,但是我们有时需要限制它,比如让它只能输入数字,那么我们就可以使用正则表达式去约束它。
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, constraints: new{id = @"^\d*$"}, namespaces: new[] { "MvcStudy.Controllers" } ); } }
标签:out 数字 arp ace asp.net default 二义性 conf 数据
原文地址:http://www.cnblogs.com/cnki/p/6105553.html