限制 MVC 5 中的嵌套视图
本文关键字:嵌套 视图 MVC 限制 | 更新日期: 2023-09-27 18:33:05
我的网站需要如下所示的路由:
/products/product1/subcategory
/products/product1/subcategory2
/products/product2/subcagetory
etc..
我已经设置了我的路线:
routes.MapRoute("Product1", "products/product1/{action}" ....
routes.MapRoute("Product2", "products/product2/{action}" ....
我这样做是为了确保菜单项重定向到正确的视图,这很好用,但是我们的测试人员发现用户可以交换返回不规则结果的URL,例如:
/products/product1/subcategory-for-product2
/products/product2/subcategory-for-product1
有没有办法阻止这种情况发生?
由于这是路由逻辑,因此您可以创建一个自定义约束来检查子类别是否属于产品:
public class CategoryConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
// code to validate subcategory
}
}
。并在路由定义中使用此约束。
验证将检查类别是否属于产品,如果不是,则不匹配它,以便 URL 以无效请求结尾(找不到资源)。
使用这种方法,可以处理每个无效的传入路由以及生成传出链接;我认为这比在控制器中执行此操作更干净。
阅读更多。
编辑:刚刚找到这个相关问题。