ASP.NET MVC5单击Html.ActionLink更改语言/文化
发布时间:2020-12-16 07:25:16 所属栏目:asp.Net 来源:网络整理
导读:我的ASP.NET MVC5应用程序存在问题.我的应用程序可以设置在浏览器中设置的lang / culture(现在只有英语和波兰语(默认)).我想通过点击 Html.ActionLink让用户改变语言/文化. 我创建了一个类: namespace Guestbook{ public static class Click { public stati
我的ASP.NET MVC5应用程序存在问题.我的应用程序可以设置在浏览器中设置的lang / culture(现在只有英语和波兰语(默认)).我想通过点击
Html.ActionLink让用户改变语言/文化.
我创建了一个类: namespace Guestbook { public static class Click { public static void SetCulture(string name) { Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(name); Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; } } } 我有我的观点: @Html.ActionLink("PL","","Guests",routeValues: null,htmlAttributes: new { onclick = "SetCulture("pl");" }) @Html.ActionLink("EN",htmlAttributes: new { onclick = "SetCulture("en");" }) 当然,它不起作用.我还需要什么? JavaScript函数? 解决方法
最简单的答案是您需要创建一个然后链接到的控制器.
public class LanguageController : Controller { public ActionResult SetLanguage(string name) { Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(name); Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; HttpContext.Current.Session["culture"] = name; return RedirectToAction("Index","Home"); } } 然后在你看来: <a href="@Url.Action("SetLanguage","Language",new { @name = "pl" })">Polski</a> <a href="@Url.Action("SetLanguage",new { @name = "en" })">English</a> 您可以考虑将会话或类似的用户数据存储起来. 编辑: 例如,您可以在global.asax中使用Application_BeginRequest事件. protected void Application_BeginRequest(Object sender,EventArgs e) { var name = HttpContext.Current.Session["culture"] as string; if (string.IsNullOrEmpty(name)) { return; } System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(name); System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture; } 编辑: 将Cookie保存在SetLanguage操作中: var cookie = new HttpCookie("_culture",name); cookie.Expires = DateTime.Today.AddYears(1); Response.SetCookie(cookie); 在Application_BeginRequest中获取cookie: var cookie = HttpContext.Current.Request.Cookies["_culture"]; var name = cookie != null ? cookie.Value : null; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在IIS之后安装ASP.Net 2.0
- iis-7 – IIS重置会强制缓存项目重新发送吗?
- asp.net-identity – EF7标识不加载用户扩展属性
- 在asp.net mvc 2.0中使用Html.DropDownListFor帮助器时如何
- 请慎用ASP.Net的validateRequest="false"属性
- asp.net-mvc – 自定义HtmlHelper扩展方法在View中不可用?
- asp.net-mvc – 为什么ASP.NET在静态图像请求上形成身份验证
- asp.net下创建、查询、修改带名称空间的 XML 文件的例子
- asp.net – 在后面的代码中通过jquery添加列表框项的问题
- asp.net-mvc – ASP.NET MVC:模型与MembershipUsers之间的
推荐文章
站长推荐
热点阅读