从 RouteTable 检索路由值

Sad*_*egh 5 asp.net-mvc routetable

我想从 RouteTable 检索路由值,但它为空。有人可以帮忙吗?

public static class GetRouteValues
{
    public static string GetSomeValue()
    {
        RouteCollection routes = RouteTable.Routes;
        var value = routes["somevalue"].ToString();
        return value;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想检索此值以在 global.asax 文件中使用,并将其设置为某些路由值的默认值。

string value = GetRouteValues.GetSomeValue();
routes.MapRoute(null,
                        "{_value}/home",
                        new
                        {
                            _value = value,
                            controller = "home",
                            action = "index"
                        });
Run Code Online (Sandbox Code Playgroud)

ant*_*nyv 6

好吧,如果您想获取当前路线,您可以在控制器中执行此操作......

var completeRoute = this.ControllerContext.RouteData.Route;
//or
var justValue = this.ControllerContext.RouteData.Values["value"]
Run Code Online (Sandbox Code Playgroud)

让我知道这是否是你所追求的......

更新:

好吧,我认为这应该可以满足您的需求。您应该能够在静态方法中使用它,而无需传入任何上下文对象。

var httpContext = new HttpContextWrapper(HttpContext.Current); 
var requestContext = new RequestContext(httpContext, new RouteData());
var completeRoute = requestContext.RouteData.Route;
var justValue = requestContext.RouteData.Values["value"];
Run Code Online (Sandbox Code Playgroud)

希望有帮助。