路由系统之URL模式(1) |
您所在的位置:网站首页 › url模式匹配字符串的原则 › 路由系统之URL模式(1) |
路由系统由一组路由来实现它的功能,这些路由共同组成了应用程序的URL架构。 让每一条路由都包含一个URL模式,用它与输入的URL进行比较,如果该模式与这个URL匹配,那么它便被路由系统用来对这个URL进行处理。 URL可以分成几个片段,除主机名和查询字符串之外,这些URL的组成部分都用"/“字符进行分割。 如:http://mysite.com/Admin/Index 此示例中,URL中有两个片段: 1.第一个片段包含单词"Admin” —>控制器(Controller) 2.第二个片段包含单词"Index" —>动作方法(Action) 对应的URL模式: {controller}/{action} 当处理一个输入请求时,路由系统的工作是将这个请求URL与一个模式进行匹配,然后从此URL为这个模式中定义的片段变量提取出相应的值。 所谓"与一个模式匹配":一个MVC程序通常会有几条路由,而路由系统会把输入的URL逐一与每条路由的URL模式进行相比较,直到能找到一条匹配的路由为止。 在App_Start文件下的RouteConfig.cs文件中配置了具体的路由规则: 用MapRoute方法注册一个简单的路由: routes.MapRoute( name:"MyRoute", url: "{controller}/{action}" );
定义默认值: 如果请求的URL为:http://localhost:60506/User,会报错: 当URL不包含与一个片段匹配的值时,便可以使用默认值 routes.MapRoute( name:"MyRoute", url: "{controller}/{action}", defaults:new {action="Login"}, );此路由可以匹配单片段和URL,当处理单片段的URL时,路由系统将从唯一的URL片段中提取出controller值,并对action变量使用默认值。 所以可以请求http://localhost:60506/User,并调用User控制器上的Login动作方法。 可以进一步,定义不含任何变量的URL,只依靠默认值来标识controller和action: defaults:new { controller="User", action="Login"},输入URL:http://localhost:60506 该路由的URL模式定义了标准的controller和 action,以及一个自定义变量"id" id实际上就是一个路由参数,在后台可以使用RouteData.Values属性获取. 在User控制器中,添加CustomVariable动作方法: 使用ViewBag传递几个参数值给对应的view public ActionResult CustomVariable() { //给对应的View视图传递参数 ViewBag.Controller = "User"; ViewBag.Action = "CustomVariable"; ViewBag.CustomVariable = RouteData.Values["id"];//获取路由参数 return View(); }在View文件夹下的User子目录下,添加CustomVariable动作方法对应的view: CustomVariable.cshtml. @{ Layout = null; } CustomVariable //获取Action动作方法传递的参数 The controller is:@ViewBag.Controller The action is:@ViewBag.Action The custom variable is:@ViewBag.CustomVariableResult: |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |