ローカライズ:ASP.NET MVC:ValidationAttributeと私は同じようValidationAttributeを持っているにErrorMessage
public class Username : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null)
return false;
return RegExp.Validate(RegExpLib.Username,value.ToString());
}
}
..andこのようにそれを使用して:
public class AccountSignIn
{
[Username(ErrorMessageResourceName ="txtUsername",ErrorMessageResourceType=typeof(SignIn))]
public string Username { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
public string ReturnUrl { get; set; }
}
サインインがApp_GlobalResourcesでリソースファイルをであり、 "txtUsername" - リソースファイル内の文字列名です。
問題: エラーメッセージは表示されません。
質問: ウェブサイトに言語が少なくてもエラーメッセージを設定する方法
別情報:
私ができるビューからアクセスSignIn.txtUsername
またはプロジェクト内の任意のファイルです。コントローラ
ModelState.AddModelError("Username", Resources.SignIn.txtUsername);
からだけでなく正常に動作します..私はValidationAttribute内にErrorMessageを割り当てるが、2番目の検証がしようとした後、私はこのようにチェックし配置する場合...エラーを得たことができます -
if(ErrorMessage != Resources.SignIn.txtUsername)
ErrorMessage = Resources.SignIn.txtUsername;
私は後にエラーが発生しています別の言語に切り替える - ErrorMessageは1回だけ割り当てることができます。
解決方法を教えてください。
ありがとうございます。
私はグローバルリソース "SignInはApp_GlobalResourcesのリソースファイル"を使用しています。 –
残念ながら、App_GlobalResourcesのリソースを公開することはできません。代わりに "Properties"フォルダのリソースファイルを使用する必要があります - プロジェクトを右クリックし、プロパティを選択し、左メニューから "Resources"を選択して "this project ..."をクリックしてください。 "Resources.resx"というデフォルトのリソースファイルが作成されます。 [必須(ErrorMessageResourceName = "Password_Required"、ErrorMessageResourceType = typeof(Properties.ModelErrors))] – Feryt
これは本当です。 DataAnnotationsはASP.NETの外部で使用されるため、App_XxxResourcesについては何も知らず、従来のリソースファイルでも動作します。 –