在哪里注册属性路由自定义类约束
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 文件夹 - 在这个文件夹中,我们有(大部分)完整的网站展示个别功能的用例。它们的主要目的不是作为样本,但它们相当广泛。大量的文档是我们仍在努力的事情,我们肯定可以做更多的事情。以上是关于在哪里注册属性路由自定义类约束的主要内容,如果未能解决你的问题,请参考以下文章
在自定义 UIView 类 Iphone 上应用自动布局约束。