亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 編程設計 > 正文

ASP.NET MVC實現功能:通過URL路由實現對多語言的支持

2020-07-14 13:37:43
字體:
來源:轉載
供稿:網友
對于一個需要支持多語言的Web應用,一個很常見的使用方式就是通過請求地址來控制界面呈現所基于的語言文化,比如我們在表示請求地址的URL中將 上語言文化代碼(比如en或者en-US)來指導服務器應該采用怎樣的語言來顯示界面的內容。對于一個ASP.NET MVC應用來說,我們很容易通過URL路由來實現這樣一個功能。[本文已經同步到《How ASP.NET MVC Works?》中]
在 具體介紹實現之前,我們通過一個簡單的例子談談最終實現的效果。在通過ASP.NET MVC項目模板創建的空Web應用中,我們創建了如下一個HomeController,默認的Action方法Index用于呈現一個登錄View。作 為Model的LoginInfo類包含UserName和Password兩個屬性,分別表示登錄輸入的用戶名和密碼。需要注意的是,在兩個屬性上應用 了DisplayAttribute并通過資源的方式指定了顯示名稱以實現對多語言的支持。[原代碼從這里下載]
public class HomeController : Controller
2: {
3: public ActionResult Index()
4: {
5: return View(new LoginInfo());
6: }
7: }
8:
9: public class LoginInfo
10: {
11: [Display(Name ="UserName", ResourceType = typeof(Resources))]
12: public string UserName { get; set; }
13:
14: [Display(Name="Password", ResourceType = typeof(Resources))]
15: [DataType(DataType.Password)]
16: public string Password { get; set; }
17: }
如下所示的Action方法Index對應的View的定義,這是一個基于LogInfo的強類型View。
1: @model MvcApp.Models.LoginInfo
2: @using (Html.BeginForm())
3: {
4: @Html.EditorForModel()
5: <input type="submit" value="@MvcApp.Properties.Resources.Login" />
6: <input type="button" value="@MvcApp.Properties.Resources.Cancel" />
7: }
在Global.asax中,我們修改了默認添加的URL路由注冊代碼,使請求URL中包含相應的語言文化信息({culture})。
1: public class MvcApplication : System.Web.HttpApplication
2: {
3: //其他成員
4: public static void RegisterRoutes(RouteCollection routes)
5: {
6: //其他操作
7: routes.MapRoute(
8: name: "Default",
9: url: "{culture}/{controller}/{action}/{id}",
10: defaults: new { culture="en", controller = "Home", action = "Index", id = UrlParameter.Optional }
11: );
12: }
13: }
我們直接運行該程序,并在請求地址中指定不同的Culture(en和zh),界面呈現基于的語言正是我們期望的。
實際上針對URL路由的本地化可以通過具有如下定義的名為CultureAwareHttpModule的自定義HttpModule來實現。我們 通過CultureAwareHttpModule注冊了HttpApplication的BeginRequest和EndRequest事件,通過 URL路由系統得到表示語言文化的路由變量culture,并對當前線程的Culture和UICulture進行了相應的設置和恢復。
1: public class CultureAwareHttpModule : IHttpModule
2: {
3: private CultureInfo currentCulture;
4: private CultureInfo currentUICulture;
5:
6: public void Dispose(){}
7: public void Init(HttpApplication context)
8: {
9: context.BeginRequest += SetCurrentCulture;
10: context.EndRequest += RecoverCulture;
11: }
12: private void SetCurrentCulture(object sender, EventArgs args)
13: {
14: currentCulture = Thread.CurrentThread.CurrentCulture;
15: currentUICulture = Thread.CurrentThread.CurrentUICulture;
16: HttpContextBase contextWrapper = new HttpContextWrapper(HttpContext.Current);
17: RouteData routeData = RouteTable.Routes.GetRouteData(contextWrapper);
18: object culture;
19: if (routeData.Values.TryGetValue("culture", out culture))
20: {
21:
22: try
23: {
24: Thread.CurrentThread.CurrentCulture = new CultureInfo(culture.ToString());
25: Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture.ToString());
26: }
27: catch
28: { }
29: }
30: }
31: private void RecoverCulture(object sender, EventArgs args)
32: {
33: Thread.CurrentThread.CurrentCulture = currentCulture;
34: Thread.CurrentThread.CurrentUICulture = currentUICulture;
35: }
36: }
我們只需要通過如下配置對CultureAwareHttpModule進行注冊即可。
1: <configuration>
2: <system.web>
3: <httpModules>
4: <add name="CultureAwareHttpModule" type="MvcApp.CultureAwareHttpModule, MvcApp"/>
5: </httpModules>
6: ...
7: </configuration>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品国产自产拍高清av水多| 少妇高潮久久77777| 亚洲欧美制服丝袜| 亚洲欧美日韩在线高清直播| 国产亚洲精品美女久久久久| 91av在线播放| 亚洲精品自产拍| 国产91亚洲精品| 国产精品高潮呻吟久久av野狼| 国产性色av一区二区| 国产成人综合av| 国产久一一精品| 亚洲图片欧美午夜| 亚州国产精品久久久| 狠狠色狠色综合曰曰| 欧美专区福利在线| 欧美精品少妇videofree| 久久国产精品亚洲| 视频在线观看一区二区| 欧美精品在线免费播放| 欧美极品第一页| 国产精品午夜视频| 少妇av一区二区三区| 国产精品久久久久99| 亚洲第一免费播放区| 欧美成人h版在线观看| 国产精品久久久久久av福利软件| 久久男人资源视频| 亚洲va欧美va国产综合剧情| 久久全国免费视频| 日韩激情av在线播放| 色老头一区二区三区在线观看| 亚洲一区999| 热99在线视频| 精品免费在线视频| 久久色在线播放| 欧美日韩aaaa| 亚洲最新av在线| 久久久人成影片一区二区三区观看| 久久精品视频在线| 色与欲影视天天看综合网| 九九热99久久久国产盗摄| 久久久久久有精品国产| 国产成人精品免高潮在线观看| 国产精品久久色| 亚洲在线第一页| 91视频免费网站| 中文字幕日韩综合av| 国产精品久久久久久久app| 精品国产91久久久久久老师| 久久久久久久亚洲精品| 色婷婷亚洲mv天堂mv在影片| 麻豆国产va免费精品高清在线| 亚洲一二三在线| 日韩国产激情在线| 欧美亚洲国产成人精品| 久久九九国产精品怡红院| 国产脚交av在线一区二区| 欧美制服第一页| 91精品中文在线| 国产成人av网址| 欧美精品在线免费观看| 日韩最新在线视频| 日韩视频亚洲视频| 日韩精品www| www.久久久久久.com| 国产成人亚洲综合91精品| 懂色av一区二区三区| 精品性高朝久久久久久久| 欧美重口另类videos人妖| 亚洲伊人一本大道中文字幕| 欧美成人中文字幕在线| 日韩动漫免费观看电视剧高清| 国产成人在线视频| 日韩在线视频二区| 久久精品国产综合| 青草青草久热精品视频在线观看| 久久久亚洲国产| 欧美国产日韩一区二区三区| 欧美激情日韩图片| 国内精品久久久久久久久| 国产美女直播视频一区| 日韩高清av一区二区三区| 国产成人综合av| 久青草国产97香蕉在线视频| 亚洲精品美女在线观看播放| 亚洲成年人影院在线| 97精品一区二区三区| 国产女精品视频网站免费| 亚洲视频在线看| 国产精品久久久精品| 日韩在线视频网站| 国产欧美日韩免费| 国产精品久久久久久五月尺| 奇米影视亚洲狠狠色| 欧美日韩国产中字| 久久久国产精彩视频美女艺术照福利| 国产美女精品视频免费观看| 国产精品吹潮在线观看| 欧美wwwxxxx| 欧美成人激情在线| 久久综合久中文字幕青草| 91精品久久久久久久久青青| 国产一区二区成人| 91人人爽人人爽人人精88v| 国产亚洲精品久久| 亚洲伊人一本大道中文字幕| 精品偷拍各种wc美女嘘嘘| 国产91|九色| 亚洲综合日韩中文字幕v在线| 久久精品99国产精品酒店日本| www.午夜精品| 欧美日韩另类字幕中文| 国产精品一区二区三区在线播放| 狠狠色香婷婷久久亚洲精品| 高清一区二区三区四区五区| 亚洲欧美日本精品| 亚洲片在线资源| 国产精品高潮呻吟视频| 欧美尺度大的性做爰视频| 亚洲国产一区自拍| 在线亚洲午夜片av大片| 国产日韩欧美自拍| 美女福利视频一区| 亚洲一区二区国产| 777午夜精品福利在线观看| 精品国偷自产在线视频99| 91精品国产777在线观看| 国产精品一区二区三区成人| 欧美超级乱淫片喷水| 亚洲国产精品免费| 亚洲欧美在线磁力| 亚洲欧洲一区二区三区在线观看| 欧美一区二区三区精品电影| 亚洲的天堂在线中文字幕| 国产免费一区二区三区香蕉精| 欧美人交a欧美精品| 隔壁老王国产在线精品| 中文字幕v亚洲ⅴv天堂| 亚洲美女动态图120秒| 欧美大码xxxx| 国产区亚洲区欧美区| 久久久免费av| 日韩在线视频一区| 日韩欧美在线第一页| 精品久久香蕉国产线看观看gif| 伊是香蕉大人久久| 成人免费激情视频| 亚洲欧美日本伦理| 成人激情视频在线播放| 亚州欧美日韩中文视频| 欧美日韩第一页| 在线观看久久av| 久久久免费精品| 黑人巨大精品欧美一区二区免费| 宅男66日本亚洲欧美视频| 亚洲精品国产品国语在线| 亚洲电影免费观看| 中文字幕视频一区二区在线有码| 色综合久久精品亚洲国产| 91精品国产一区| 久久免费视频在线观看| 久久香蕉精品香蕉| 伊人久久五月天|