2017-12-08 3 views
0

私のAPPでクライアント側の検証を設定するのは非常に困難です。ローカライズされたpt-BRの入力を受け入れることができるようにしたいと思います。ASP.NET Core MVCでクライアント側の検証のためのカルチャを設定する

私は、起動時に使用するアプリを設定しようとした:

var locale = "pt-BR"; 
RequestLocalizationOptions localizationOptions = new RequestLocalizationOptions { 
    SupportedCultures = new List<CultureInfo> { new CultureInfo(locale) }, 
    SupportedUICultures = new List<CultureInfo> { new CultureInfo(locale) }, 
    DefaultRequestCulture = new RequestCulture(locale) 
}; 

を、私はメインのHTMLファイルに<html lang="pt-br">を設定します。

これは、サーバー側で通貨、日付時刻、および数値を表示するために機能しますが、依然としてクライアントの検証ではen-USが入力されます。

クライアント側では、私がローカライズされた入力を理解するために、クライアント側の検証を設定するにはどうすればよいjquery.validatejquery.validate.unobtrusive

を使用していますか?

+0

https://developer.mozilla.org/en-US/docs/このメソッドを追加Web/JavaScript/Reference/Global_Objects/Intl – Igor

+0

@Igorすべてのドキュメントを読みましたが、あまり役に立ちません。私は解決策を見つけることができませんでした –

+1

標準のJavaScriptメソッドを使用して文字列と他の型を変換する場合、クライアントをロケールを考慮して設定することはできません。 'Intl'ライブラリから関数を呼び出す必要があります。 – Igor

答えて

0

このようなヘルパークラスを作成します。

public class PortugueseCulture : CultureInfo 
{ 
    private readonly Calendar cal; 
    private readonly Calendar[] optionals; 

    public PortugueseCulture() 
     : this("pt-BR", true) 
    { 
    } 

    public PortugueseCulture(string cultureName, bool useUserOverride) : base(cultureName, useUserOverride) 
    { 
     //Your Custom Currency Numbers Calendar Culture Code 
    } 

    public override Calendar Calendar 
    { 
     get { return cal; } 
    } 

    public override Calendar[] OptionalCalendars 
    { 
     get { return optionals; } 
    } 
} 

次にGlobal.asax.csに

protected void Application_BeginRequest(object sender, EventArgs e) 
    { 
     var portugueseCulture = new PortugueseCulture(); 
     Thread.CurrentThread.CurrentCulture = portugueseCulture; 
     Thread.CurrentThread.CurrentUICulture = portugueseCulture; 
    } 
関連する問題