如何使用参数填写 WebApi2 RouteTemplate 以生成路由字符串?
How can I fill out a WebApi2 RouteTemplate with parameters to produce a route string?
我有一个包含路由模板字符串的 HttpRouteCollection,它通常看起来像“/something/{param1}/{param2}”,我有带有这些参数值的匿名对象,比如 new { param1 = "a", 参数 2 = "b" }。有没有一种预先存在的方法可以让我插入我的值并获得“/something/a/b”的最终值?这可能在某种程度上通过反射和一些替换来完成,但我想知道是否有一种标准的方法来实现这一点。
我在参考源中看到一个 ParsedRoute class 似乎执行此任务 (https://github.com/Microsoft/referencesource/blob/master/System.Web/Routing/ParsedRoute.cs) 但它是内部的。
我知道这个问题已经有几年了,但有人可能会像我一样偶然发现它,我想分享一下我是如何解决这个问题的。
获得 RouteTemplate
后,您可以使用 TemplateBinder
将值绑定到它并构建一个字符串。从注入 TemplateBinderFactory
开始,然后执行如下操作:
var binder = _templateBinderFactory.Create(template, new RouteValueDictionary());
var result = binder.BindValues(routeValues);
我希望对某人有所帮助:-)
我有一个包含路由模板字符串的 HttpRouteCollection,它通常看起来像“/something/{param1}/{param2}”,我有带有这些参数值的匿名对象,比如 new { param1 = "a", 参数 2 = "b" }。有没有一种预先存在的方法可以让我插入我的值并获得“/something/a/b”的最终值?这可能在某种程度上通过反射和一些替换来完成,但我想知道是否有一种标准的方法来实现这一点。 我在参考源中看到一个 ParsedRoute class 似乎执行此任务 (https://github.com/Microsoft/referencesource/blob/master/System.Web/Routing/ParsedRoute.cs) 但它是内部的。
我知道这个问题已经有几年了,但有人可能会像我一样偶然发现它,我想分享一下我是如何解决这个问题的。
获得 RouteTemplate
后,您可以使用 TemplateBinder
将值绑定到它并构建一个字符串。从注入 TemplateBinderFactory
开始,然后执行如下操作:
var binder = _templateBinderFactory.Create(template, new RouteValueDictionary());
var result = binder.BindValues(routeValues);
我希望对某人有所帮助:-)