ASP.NET Core MVC 中實(shí)現(xiàn)中英文切換的示例代碼
哈嘍..大家好 很久沒有更新了,今天就來一篇最近開發(fā)用到的功能,那就是中英文切換,這個(gè)實(shí)際上也不是高大上,先說一下原理,在.NET Core框架中給我們提供了全球化的類,叫做Localization,其官方的文檔地址傳送門。
在我的項(xiàng)目中,我是這樣操作的,你想用別的方式,也可以看文檔自己去搞。這個(gè)已經(jīng)不是什么新鮮的東西了,只是網(wǎng)上的實(shí)現(xiàn)有些問題,不容易明白。
我們無需任何Nuget包,因?yàn)樗窃贛icrosoft.AspNetCore.Mvc.Localization中,那么我們直接在.NET Core 框架中添加 Localization 服務(wù)。
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);
services.Configure<RequestLocalizationOptions>(opts =>
{
var supportedCultures = new List<CultureInfo>{
new CultureInfo("en-US"),
new CultureInfo("zh-CN")};
opts.SupportedCultures = supportedCultures;
opts.SupportedUICultures = supportedCultures;
opts.RequestCultureProviders = new List<IRequestCultureProvider>{
new X_DOVERequestCultureProvider()
};
});
services.AddControllersWithViews();
}
嗯,這個(gè)代碼是.NET Core 3.1 的 應(yīng)該不會(huì)有太大區(qū)別吧?那個(gè)X_DOVERequestCultureProvider是我們自定義實(shí)現(xiàn)的,寫入了一些規(guī)則,我們看一下。
public class X_DOVERequestCultureProvider : RequestCultureProvider
{
public override Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)
{
var CULTURE_String = "CULTURE";
var CultureCookie = httpContext.Request.Cookies[CULTURE_String]?.ToString() ?? "";
if (string.IsNullOrWhiteSpace(CultureCookie))
{
CultureCookie = "zh-CN";
httpContext.Response.Cookies.Append(key: CULTURE_String, value: CultureCookie, options: new CookieOptions() { Expires = DateTime.Now.AddYears(1) });
}
return Task.FromResult(new ProviderCultureResult(CultureCookie));
}
}
首先我們應(yīng)該知道RequestCultureProvider,它是一個(gè)在框架自身包括的 .net core 提供的,我們繼承它重寫了它的抽象類,在其中獲取了httpContext的Cookies值,然后進(jìn)行判斷,如果沒有咱們就不給它進(jìn)行一個(gè)輸出了,否則它還是我們的zh-CN 就是中文。
對(duì),別忘記了要在Configure中使用中間價(jià)
app.UseRequestLocalization(
options:app.ApplicationServices
.GetService<IOptions<RequestLocalizationOptions>>().Value);
隨后我們應(yīng)該定義我們的配置文件,創(chuàng)建一個(gè)文件夾,放進(jìn)去,它應(yīng)當(dāng)和上面Startup中的文件夾相同,隨后創(chuàng)建對(duì)應(yīng)的視圖位置,一個(gè)英文一個(gè)中文,一定要注意后面對(duì)應(yīng)的en-Us 和 zh-CN 要相同哦。

就現(xiàn)在我們?cè)谝晥D中最上面導(dǎo)入包,然后對(duì)應(yīng)字典就可以了。
@using Microsoft.AspNetCore.Mvc.Localization @inject IViewLocalizer Localizer <section class="copyright"> @Localizer["section1"] <a rel="external nofollow" > | GitHub</a></section>
你肯定知道該怎么辦了,對(duì)的你可以去修改Cookies來操作當(dāng)前httpContext中的合約,但盡管如何,我們只是重寫了cookies的,還沒有重寫url的,
<script>
$(function () {
$("#language").change(function (e) {
var opt = $("#language").val();
if (opt == 1) {
document.cookie = 'CULTURE=zh-CN';
location.reload();
} else if(opt == 2) {
document.cookie = 'CULTURE=en-US';
location.reload();
}
});
});
</script>
好吧,歡迎各位同學(xué)把重寫url的方法寫寫出來,回復(fù)在本篇文章中..我們看一下效果,好的就這樣吧..

到此這篇關(guān)于ASP.NET Core MVC 中實(shí)現(xiàn)中英文切換的示例代碼的文章就介紹到這了,更多相關(guān)ASP.NET Core MVC 中英文切換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- asp.net mvc webapi 實(shí)用的接口加密方法示例
- ASP.NET Core MVC解決控制器同名Action請(qǐng)求不明確的問題
- 如何在Asp.Net Core MVC中處理null值的實(shí)現(xiàn)
- 創(chuàng)建一個(gè)ASP.NET MVC5項(xiàng)目的實(shí)現(xiàn)方法(圖文)
- ASP.NET Core MVC如何實(shí)現(xiàn)運(yùn)行時(shí)動(dòng)態(tài)定義Controller類型
- asp.net mvc core管道及攔截器的理解
- ASP.NET Core MVC獲取請(qǐng)求的參數(shù)方法示例
- ASP.NET Core MVC通過IViewLocationExpander擴(kuò)展視圖搜索路徑的實(shí)現(xiàn)
- 在ASP.NET Core Mvc集成MarkDown的方法
- 如何使用簽名保證ASP.NET MVC OR WEBAPI的接口安全
相關(guān)文章
支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程
這篇文章主要介紹了支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程,需要的朋友可以參考下2016-04-04
asp.net core項(xiàng)目中如何使用html文件
這篇文章主要給大家介紹了關(guān)于asp.net core項(xiàng)目中如何使用html文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面是隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02
在ASP.NET中實(shí)現(xiàn)多文件上傳的方法
在ASP.NET中實(shí)現(xiàn)多文件上傳的方法...2007-03-03
淺談ASP.NET Core中間件實(shí)現(xiàn)分布式 Session
這篇文章主要介紹了淺談ASP.NET Core中間件實(shí)現(xiàn)分布式 Session,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
Asp.net XML文檔進(jìn)行添加刪改操作的實(shí)例代碼
Asp.net 對(duì)一下XML文檔進(jìn)行添加刪改的實(shí)例2009-12-12
剖析ASP.NET MVC的DependencyResolver組件
這篇文章主要為大家剖析ASP.NET MVC的DependencyResolver組件,感興趣的小伙伴們可以參考一下2016-04-04
.Net Core簡(jiǎn)單使用Mvc內(nèi)置的Ioc
這篇文章主要為大家詳細(xì)介紹了.Net Core簡(jiǎn)單使用Mvc內(nèi)置的Ioc,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
ASP.NET:把a(bǔ)shx寫到類庫里并在頁面上調(diào)用的具體方法
最近在調(diào)整博客的架構(gòu),進(jìn)一步把表現(xiàn)和業(yè)務(wù)分離,所以要把之前用ashx搞的那些Http Handler放到類庫中,下面是具體的步驟及代碼2013-06-06
ASP.NET Core 實(shí)現(xiàn)基本認(rèn)證的示例代碼
這篇文章主要介紹了ASP.NET Core 實(shí)現(xiàn)基本認(rèn)證的示例代碼嗎,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

