在哪里注册属性路由自定义类约束

Posted

技术标签:

【中文标题】在哪里注册属性路由自定义类约束【英文标题】:Where to register attribute routing custom class constraints 【发布时间】:2015-02-06 20:53:43 【问题描述】:

我正在尝试使用 vNext 创建第一个 API 应用程序,熟悉 WebAPI。我想使用具有类型约束的属性路由。我在哪里编写某种配置以将约束名称映射到自定义类/枚举?我在Startup.cs 中尝试了Configure 方法,但不知道如何处理IApplicationBuilder。在https://github.com/aspnet/Routing 搜索什么结果。

我想,应该有一个地方可以在某处插入这段代码(用于枚举约束):

routes.MapAttributeRoutes(cfg =>

    // ...
    cfg.InlineRouteConstraints.Add("customenum", typeof(EnumRouteConstraint<MyEnum>));
);

【问题讨论】:

【参考方案1】:

内联约束在options 中配置。定义选项的模式是ASPNET 5中常见的模式,下面的代码在Startup.cs

public IServiceProvider ConfigureServices(IServiceCollection serviceCollection)

    /// rest of the code

    serviceCollection.Configure<RouteOptions>(routeOptions =>
    
        routeOptions =>
            routeOptions.ConstraintMap
            .Add("yourstring", typeof(YourConstraintType)));
    

由于代码启动区域中的选项定义因版本而异,因此我粘贴了一些适用于最新位的内容。您可能需要根据项目中的版本进行调整。

Here is MVC 如何添加自定义exists 约束。请注意,这是从 AddMvc() 调用的。

Here is MVC startup.cs 示例。

Here is 针对此场景添加示例和测试的问题跟踪。

另外请注意,我们现在也支持常规路由中的内联约束。

【讨论】:

感谢您提供示例和链接。我看到你是 ASPNET5 团队的一员,如果有的话,你能指点我实际的示例/文档集合吗?我试图找到一些东西开始,一切似乎都分散在 GitHub 上的不同 repos 和 asp.net 网站上的文章中。 目前东西确实散了。但是对于 MVC 本身来说,一个好的位置是 MVC 存储库本身,我们有两种类型的示例:1. 示例文件夹(我在原始帖子中指出) 2. Tests/FunctionalTests/WebSites 文件夹 - 在这个文件夹中,我们有(大部分)完整的网站展示个别功能的用例。它们的主要目的不是作为样本,但它们相当广泛。大量的文档是我们仍在努力的事情,我们肯定可以做更多的事情。

以上是关于在哪里注册属性路由自定义类约束的主要内容,如果未能解决你的问题,请参考以下文章

按钮未在自定义 UIButton 中注册触摸

在自定义 UIView 类 Iphone 上应用自动布局约束。

自定义UIView类约束,具体取决于ParentView

从自定义 UIView 类设置视图宽度约束不更新帧

Rails + 延迟作业:存储自定义作业类的正确位置在哪里?

UITableViewCell 自定义类 - 更改子视图高度约束后重新加载单元格高度