gpt4 book ai didi

c# - ASP.NET MVC : How to get route values

转载 作者:行者123 更新时间:2023-12-03 23:56:39 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





ASP.NET MVC 5 culture in route and url

(2 个回答)


4年前关闭。




我需要获取语言参数的值我试过这段代码

if(HttpContext.Current.Request.RequestContext.RouteData.Values["language"] == null)
{
HttpContext.Current.Request.RequestContext.RouteData.Values["language"] = "en-US";

}

上面的代码使网址如下所示,非常好

http://localhost:25576/en-US/Home

问题是当用户输入 http://localhost:25576/Home 时(不带 en-US) HttpContext.Current.Request.RequestContext.RouteData.Values["language"]的值变成“家”

我的问题是,如果用户删除 en-US 或用户输入 http://localhost:25576/Home,如何获取语言参数的实际值

路由配置
  public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
name: "DefaultLocalized",
url: "{language}/{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional,
language = ""

}
);
}

最佳答案

您可以新建一个 ActionFilterAttribute为了这个目的:

public class LocalizationAttribute : ActionFilterAttribute
{
private readonly string _defaultLanguage = "en-US";

public LocalizationAttribute(string defaultLanguage = null)
{
this._defaultLanguage = defaultLanguage ?? this._defaultLanguage;
}

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var language = filterContext.RouteData.Values["language"] as string ?? this._defaultLanguage;

if (language != this._defaultLanguage)
{
try
{
Thread.CurrentThread.CurrentCulture =
Thread.CurrentThread.CurrentUICulture =
CultureInfo.CreateSpecificCulture(language);
}
catch
{
throw new NotSupportedException($"Invalid language code '{language}'.");
}
}
}
}

您还需要注册 ActionFilter作为 GlobalFilter 的一部分.
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new LocalizationAttribute("en-US"), 0);
}
}

关于c# - ASP.NET MVC : How to get route values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45118428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com