如果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 = @"[-]+" } 
       );

如果URL至少包含一个减号,则在MVC中验证MapRoute

您可以这样定义约束:

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