从路由数据中获取操作名称

本文关键字:操作 获取 路由 数据 | 更新日期: 2023-09-27 18:31:03

我知道我是否想获取我可以使用的当前操作;

ControllerContext.RouteData.GetRequiredString("action")

但是,如果我的路线允许http://mydomain/this has spaces

怎么办

我如何得到"This Has Spaces"而不是"ThisHasSpaces"?

这是我路由表中的一个片段

        routes.MapRoute(
            "ThisHasSpaces", // Route name
            "This Has Spaces", // URL with parameters
            new { controller = "Home", action = "ThisHasSpaces", id = UrlParameter.Optional } // Parameter defaults
        );

从路由数据中获取操作名称

如果你的路由看起来像这样,没有什么可以给你原始字符串(除了Request.Uri),因为你实际上并没有将 uri 映射到路由参数。

由于您对路由进行了硬编码,因此可以添加另一个值:

    routes.MapRoute(
        "ThisHasSpaces", // Route name
        "This Has Spaces", // URL with parameters
        new { controller = "Home", action = "ThisHasSpaces", orgstring = "This Has Spaces", id = UrlParameter.Optional } // Parameter defaults
    );

并获取它:

ControllerContext.RouteData.Values["orgstring"]