MVC自定义路由参数
2016-02-16 17:13
309 查看
创建一个类,该类继承并实现接口接口IRouteConstraint。该接口在System.Web.dll的System.Web.Routing命名空间下。事例中限制参数输入长度必须大于5,代码如下
打开Global.asax文件,找到RouteConfig.RegisterRoutes(RouteTable.Routes);这段代码是MVC注册路由的,进入RegisterRoutes函数,将其改为:
然后再controller中就可以使用自定义的路由参数了,只有当参数格式符合条件时,才能进入:
public class InputLengthConstraint : IRouteConstraint { public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) { object value; if (values.TryGetValue(parameterName, out value)) { if (value.ToString().Length > 5) { return true; } } return false; } }
打开Global.asax文件,找到RouteConfig.RegisterRoutes(RouteTable.Routes);这段代码是MVC注册路由的,进入RegisterRoutes函数,将其改为:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //注册自定义路由权限 var constraintsResolver = new DefaultInlineConstraintResolver(); constraintsResolver.ConstraintMap.Add("orderJno", typeof(InputLengthConstraint)); routes.MapMvcAttributeRoutes(constraintsResolver); AreaRegistration.RegisterAllAreas(); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }
然后再controller中就可以使用自定义的路由参数了,只有当参数格式符合条件时,才能进入:
[Route("Right/{jno:orderJno}")] public ActionResult Right(string jno) { return View(); }
相关文章推荐
- 如何成为一名入门级 iOS 开发者
- 【四】注入框架RoboGuice使用:(Your First System Service Injection)
- Java Dwr3实现消息推送步骤详解
- Android 之 ListView 点击响应代码?
- c#泛型约束
- yum insatll记录
- 嵌入式Linux移植相关经验积累:基于AT91SAM9X35EK
- Java中如何遍历Map对象的4种方法
- Xml树状节点的遍历
- MFC中的数据库访问
- eclipse往mysql里面插入数据时的乱码
- Android BLE编程指南
- PhotoShop如何画矩形?PS绘制矩形方法介绍
- Android基于google Zxing实现各类二维码扫描效果
- 确定经纬度 搜索附件 sql
- bool和Boolean
- iOS CAShapeLayer和UIBezierPath绘图
- 使用Handler可能导致的内存泄露
- 16年的开篇
- iOS9 中关闭ATS的方法(网络请求失败)