おはよう!デフォルトを変更する「{0}フィールドは必須です」(究極の解決策?)
私は、ログインフォームに使用する次のViewModelクラスました:Global.asax
に
using System.ComponentModel.DataAnnotations;
...
public class UserLogin : IDataErrorInfo
{
[Required]
[DisplayName("Login")]
public string Login { get; set; }
[Required]
[DisplayName("Password")]
public string Password { get; set; }
[DisplayName("Remember Me")]
public bool RememberMe { get; set; }
#region IDataErrorInfo Members
// This will be a Model-level error
public string Error
{
get
{
if (!WebUser.CanLogin(Login, Password))
{
return Resources.ValidationErrors.InvalidLoginPassword;
}
else
{
return String.Empty;
}
}
}
// All is handled by DataAnnotation attributes, just a stub for interface
public string this[string columnName]
{
get
{
return string.Empty;
}
}
#endregion
}
そして、この:
DefaultModelBinder.ResourceClassKey = "BinderMessages";
ValidationExtensions.ResourceClassKey = "BinderMessages";
リソースファイルBinderMessages.resx
は内側に(それは二つの鍵InvalidPropertyValue
がありApp_GlobalResourcesされます)と私にはデフォルトのメッセージを与えるPropertyValueRequired
が動作します。
質問:このメッセージを変更することはできますか、それともDataAnnotationsに関連付けられていますか?
私はこれについて多くの記事を見つけましたが、解決策はありません。今の私はこれにフォールバック:
[Required(ErrorMessageResourceType = typeof(Resources.ValidationErrors), ErrorMessageResourceName = "Required")]
問題を、あなたがログインとパスワードを空白のままにした場合は何ですか?プログラムは、オブジェクトが設定されていない状態で中止されます。 – Fandango68
どうしてそう思うのですか?モデルバインダーは、とにかく 'UserLogin'オブジェクトインスタンスをインスタンス化します。 – artvolk
ほぼ5年で、まだ適用されないようです。 'global.asax'で定義されたリソースファイルで使用できるキーは4つしかありません – mcy