我试图使用从asp.net核心中的HttpContext.GetRouteData()方法返回的routedata对象来匹配路由。
假设端点'http://localhost/dogs/breed'存在,那么检查当前httpcontext上的路由数据是否与该端点匹配的最佳方法是什么?
作为示例,最简单的方法是:
var matches = string.Equals((string) routeData.Values["controller"], "dog",
StringComparison.OrdinalIgnoreCase)
&& string.Equals((string)routeData.Values["action"], "breed",
StringComparison.OrdinalIgnoreCase);
这对我来说相当不优雅,是否有更好的方法来检查此数据以在当前上下文中进行模式匹配?
谢谢
答案 0 :(得分:0)
var actual = HttpContext.GetRouteData().Values;
var expected = new RouteValueDictionary {
{ "action", "Breed" },
{ "controller", "Dogs" },
};
return !expected.Except(actual).Any();
这将匹配到Dogs
控制器及其Breed
动作的路由。
var actual = HttpContext.GetRouteData().Values;
var expected = new RouteValueDictionary
{
{
"action", nameof(ValuesController.Get)
},
{
"controller", nameof(ValuesController)
// remove the "Controller" suffix
.Remove(nameof(ValuesController).Length - nameof(Controller).Length)
},
};
return !expected.Except(actual).Any();