Asp.net mvc RouteData仅在.NET Core 3上不应用于HttpContext
我想设置RouteData,但更改不应用于HttpContextAsp.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
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”]