当前位置: 首页 > 编程笔记 >

asp.net-core 路由约束

葛景龙
2023-03-14
本文向大家介绍asp.net-core 路由约束,包括了asp.net-core 路由约束的使用技巧和注意事项,需要的朋友参考一下

示例

可以创建自定义路由约束,该约束可在路由内部使用以将参数约束为特定值或模式。

此约束将匹配典型的文化/地区模式,例如en-US,de-DE,zh-CHT,zh-Hant。

public class LocaleConstraint : IRouteConstraint
{
    private static readonly Regex LocalePattern = new Regex(@"^[a-z]{2}(-[a-z]{2,4})?$",
                                   RegexOptions.Compiled| RegexOptions.IgnoreCase);

    public bool Match(HttpContext httpContext, IRouter route, string routeKey,
                        RouteValueDictionary values, RouteDirection routeDirection)
    {
        if (!values.ContainsKey(routeKey))
            return false;

        string locale = values[routeKey] as string;
        if (string.IsNullOrWhiteSpace(locale))
            return false;

        return LocalePattern.IsMatch(locale);
    }
}

之后,必须先注册约束,然后才能在路由中使用约束。

services.Configure<RouteOptions>(options =>
{
    options.ConstraintMap.Add("locale", typeof(LocaleConstraint));
});

现在,它可以在路线内使用。

在控制器上使用

[Route("api/{culture:locale}/[controller]")]
public class ProductController : Controller { }

在动作上使用它

[HttpGet("api/{culture:locale}/[controller]/{productId}"]
public Task<IActionResult> GetProductAsync(string productId) { }

在默认路由中使用它

app.UseMvc(routes => 
{ 
    routes.MapRoute( 
        name: "default", 
        template: "api/{culture:locale}/{controller}/{id?}"); 
    routes.MapRoute( 
        name: "default", 
        template: "api/{controller}/{id?}"); 
});
           

 类似资料:
  • 本文向大家介绍asp.net-core 基本路由,包括了asp.net-core 基本路由的使用技巧和注意事项,需要的朋友参考一下 示例 这将匹配的请求/Home/Index,/Home/Index/123并/

  • 本文向大家介绍ASP.NET Core MVC 配置全局路由前缀,包括了ASP.NET Core MVC 配置全局路由前缀的使用技巧和注意事项,需要的朋友参考一下 ASP.NET Core MVC 配置全局路由前缀 前言 大家好,今天给大家介绍一个 ASP.NET Core MVC 的一个新特性,给全局路由添加统一前缀。严格说其实不算是新特性,不过是Core MVC特有的。 应用背景 不知道大家在

  • 在ASP.NET Core 1.x中,我可以在Configure中使用身份验证方法,但现在在ASP.NET Core 2.0中,我必须在ConfigureSreservices中设置所有内容,而不能在ConfigureMethod中配置。例如:

  • 本文向大家介绍详解ASP.NET Core端点路由的作用原理,包括了详解ASP.NET Core端点路由的作用原理的使用技巧和注意事项,需要的朋友参考一下 端点路由(Endpoint Routing)最早出现在ASP.NET Core2.2,在ASP.NET Core3.0提升为一等公民。 Endpoint Routing的动机 在端点路由出现之前,我们一般在请求处理管道的末尾,定义MVC中间件解

  • 本文向大家介绍asp.net-mvc 路由基础,包括了asp.net-mvc 路由基础的使用技巧和注意事项,需要的朋友参考一下 示例 当您yourSite/Home/Index通过浏览器请求url时,路由模块会将请求定向到class的Indexaction方法HomeController。如何知道将请求发送到此特定类的特定方法?出现了RouteTable。 每个应用程序都有一个路由表,在其中存储路

  • 安装 ASP.NET Core 和 TypeScript 首先,若有需要请安装 ASP.NET Core。此篇指南需要使用 Visual Studio 2015 或 2017。 其次,如果你的 Visual Studio 不带有最新版本的TypeScript,你可以从这里安装。 新建工程 选择 File 选择 New Project (Ctrl + Shift + N) 选择 Visual C#