摘要:ASP.NET MVC - 使用 MVC 實作多國語系(二)
在上一篇所介紹的多國語言方式,是透過改變 瀏覽器 的 語言 來達到切換不同語系,本篇將來實作讓使用者可以自行定義語系。
步驟一:在 Global.asax 中加入 Application_BeginRequest 事件
Code:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
//將 Cookies 的 MyLang 取出,主要是要指定語系
HttpCookie MyLang = Request.Cookies["MyLang"];
if (MyLang != null)
{
System.Threading.Thread.CurrentThread.CurrentCulture =
new System.Globalization.CultureInfo(MyLang.Value);
System.Threading.Thread.CurrentThread.CurrentUICulture =
new System.Globalization.CultureInfo(MyLang.Value);
}
}
步驟二:在 Controller 中加入程式碼
Code:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(string ddlMyLang)
{
//建立一個 Cookies 來儲存語系
//並搭配 Application_BeginRequest 事件來切換語系
HttpCookie MyLang = new HttpCookie("MyLang");
MyLang.Value = ddlMyLang.Trim();
MyLang.Expires.AddMinutes(30);
Response.Cookies.Add(MyLang);
return Redirect(Url.Action("Index", "Home"));
}
步驟三:在 View 中稍為改寫一下
Code:
<%using (Html.BeginForm("Index", "Home"))
{ %>
<h2><%= Html.Encode(ViewData["Message"]) %></h2>
<p><%=Resources.Resource.l星期一l%></p>
<p><%=Resources.Resource.l星期二l%></p>
<p><%=Resources.Resource.l星期三l%></p>
<p><%=Resources.Resource.l星期四l%></p>
<p><%=Resources.Resource.l星期五l%></p>
<p><%=Resources.Resource.l星期六l%></p>
<p><%=Resources.Resource.l星期日l%></p>
<%= Html.DropDownList("ddlMyLang", new List<SelectListItem>() { new SelectListItem() { Text = "繁體中文", Value = "zh-TW" }, new SelectListItem() { Text = "英文", Value = "en-US" } })%>
<input type="submit" value="變更語系" />
<%} %>
結果: