如果URL至少包含一个减号,则在MVC中验证MapRoute
本文关键字:则在 MVC MapRoute 验证 URL 包含一 如果 | 更新日期: 2023-09-27 18:28:15
我正在使用MVC,我想为路由添加一个约束,并且只有当URL看起来像这样时才进行验证:
mysite/带减号的url示例
所以我需要这样的东西:
routes.MapRoute(name: "Categories",
url: "{category}",
defaults: new { controller = "Home", action = "Category" },
constraints: new { category = @"[-]+" }
);
您可以这样定义约束:
routes.MapRoute(
name: "DefaultWithMinus",
url: "{cat}",
defaults: new { controller = "Home", action = "WithMinus", cat = UrlParameter.Optional },
constraints: new { cat = @"'w*-+'w*" }
);
HomeController 中的操作
public ActionResult WithMinus(string cat)
{
return Content($"With Minus: {cat}");
}
结果:
http://localhost:49651/-=>带负号:-
http://localhost:49651/asdfds-=>带负号:asdfds-
http://localhost:49651/asdfds-sdfg=>带负号:asdfds sdfg
http://localhost:49651/-sdfg=>带负号:-sdfg
Obs.:这个路由只处理一个级别,所以如果您使用类似于www.site.com/fasdf-sadfsd/secondlevel的东西,它将失败。
Obs²:如果您需要更具体的东西,您应该创建自定义路线约束:http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/creating-a-custom-route-constraint-cs