Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc RouteData仅在.NET Core 3上不应用于HttpContext_Asp.net Mvc_Asp.net Core_Httpcontext_Action Filter_Routedata - Fatal编程技术网

Asp.net mvc RouteData仅在.NET Core 3上不应用于HttpContext

Asp.net mvc RouteData仅在.NET Core 3上不应用于HttpContext,asp.net-mvc,asp.net-core,httpcontext,action-filter,routedata,Asp.net Mvc,Asp.net Core,Httpcontext,Action Filter,Routedata,我想设置RouteData,但更改不应用于HttpContext public class LocalizeRouteAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext context) { context.RouteData.Values["culture"] = "en"; string routeCu

我想设置RouteData,但更改不应用于HttpContext

public class LocalizeRouteAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        context.RouteData.Values["culture"] = "en";
        string routeCulture = context.HttpContext.GetRouteValue("culture")?.ToString();
        // ON NET CORE 2.2 routeCulture return "en"
        // ON NET CORE 3.1 routeCulture return null

        base.OnActionExecuting(context);
    }
}
我错过了什么新东西吗


要重现这种情况,您必须在新的MVC简单项目上创建过滤器,并将其应用于HomeController。它可以在2.2上使用,但不能在3.1上使用。

在核心3.1中尝试:context.RouteData.Values[“culture”]?.ToString();RouteData还可以。当一个值被自动分配给RouteData时,HttpContext应该通过GetRouteValue获得更改,但在core 3中不会发生这种情况。也许不是最好的解决方案,但现在我解决了将我的值分配给HttpContext.Request.RouteValues[“culture”]