我的网址是这样的:
/category/page-#
/tag/product/page-#
......
我可以使用MVC路由来限制页码吗? 我想做这样的事情:
routes.MapRoute(
name: "limitPaging",
url: "*/page-{pageNumber}",
defaults: new { controller = "Error", action = "P404", },
new { pageNumber = @"\d+" },
new { pageNumber > 200 }
);
谢谢
最佳答案
您可以创建自定义路由约束(一个实现 IRouteConstraint
的类)
public class LessThanPage : IRouteConstraint
{
private int _maxPage;
public LessThanPage(int maxPage)
{
_maxPage = maxPage;
}
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
return Convert.ToInt32(values[parameterName].ToString()) <= _maxPage;
}
}
routes.MapRoute(
name: "limitPaging",
url: "*/page-{pageNumber}",
defaults: new { controller = "Error", action = "P404", },
constraints: new { pageNumber > new LessThanPage(200) }
);
您也可以使用此方法来验证参数是否为数字,从而删除正则表达式约束
关于asp.net-mvc - 我可以使用 MVC 路由限制页码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25357931/