我在一個Asp.net mvc網站上工作,其中需求是用戶應該能夠更改語言和頁面內容應該自動翻譯。 問題是:我在我的模型中使用了自定義屬性來顯示本地化,如下所示:[CommonCustomAttributes.LocalizedDisplayName(「Register」,「UserEmail」)]。更改Asp.net MVC項目的當前本地化
LocalizedIdsplayname實現像以下內容:[AttributeUsageAttribute(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter,=的AllowMultiple假)] 公共密封類LocalizedDisplayNameAttribute:DisplayNameAttribute { 公共LocalizedDisplayNameAttribute(串resourceFileName,串的keyName) :基座(GetMessageFromResource(resourceFileName,註冊表項目)) {}
private static string GetMessageFromResource(string resourceFileName, string keyName)
{
try
{
return CustomLocalizationUtility.GetKeyValue(HttpContext.Current, resourceFileName, keyName);
}
catch (Exception)
{
return "";
}
}
}
因此,當我語言之間切換它不會改變.I意味着示範WHE的顯示名它使用像@ Html.LabelFor(m => m.UserEmailAddress,new {@class =「col-md-3 control-label」})。
但是,在我使用@placeholder = @ CustomLocalizationUtility.GetKeyValue(「Register」,「EnterEmail」)的.cshtml中,當我更改語言時正常工作。我錯過了什麼嚴重?我已經使用Cookie來設置當前文化,並且我還在基礎控制器中提供了BeginExecuteCore方法。我從Action方法中設置了當前文化的Cookie。我們是否需要爲基於當前文化變化的JQuery Obstrusive驗證和模型顯示名稱更改添加額外的JavaScript?
我已經改變了語言的過程中改變文化。剃鬚刀中的本地化調用工作正常,但模型顯示名稱和驗證錯誤消息在文化已更改時未更改 – Sumon154
您必須檢查UserEmailAddress的語言特定資源文件 – maztt
如果文化已更改,則您已通過第一步。第二步是你必須擁有資源文件 – maztt