13

App_GlobalResourcesディレクトリのresxファイルを使用して、モデルバリデーターのPropertyValueInvalid文字列のデフォルトメッセージを変更することができました。

ただし、値が必要な場合(PropertyValueRequired)、メッセージを変換することはできません。

Global.asax.cs Application_Start()で、次のようにリソースクラスキーを変更しました。

DefaultModelBinder.ResourceClassKey = "Messages";

そして、Messages.resxファイルに2つのエントリを入れました。

  • "PropertyValueInvalid" => "Ovalor'{0}'éinválidoparaocampo{1}。"
  • "PropertyValueRequired"=>"Énecessáriodigitaro{0}。"

ありがとう。

4

4 に答える 4

17

RequiredAttribute は使用されていません DefaultModelBinder.GetValueRequiredResource。カスタム DataAnnotationsModelValidator クラスを作成します。

public class MyRequiredAttributeAdapter : RequiredAttributeAdapter
{
  public MyRequiredAttributeAdapter(ModelMetadata metadata, 
                                    ControllerContext context, 
                                    RequiredAttribute attribute) 
         : base(metadata, context, attribute)
  {
    attribute.ErrorMessageResourceType = typeof (Messages);
    attribute.ErrorMessageResourceName = "PropertyValueRequired";
  }
}

Global.asax にアダプターを登録します。

DataAnnotationsModelValidatorProvider.RegisterAdapter(
    typeof(RequiredAttribute), 
    typeof(MyRequiredAttributeAdapter));

この助けを願っています!

DataAnnotations の再利用可能な検証エラー メッセージ リソース文字列

于 2011-03-06T00:53:44.700 に答える
9

このメッセージはSystem.ComponentModel.DataAnnotations、キーの下でアセンブリにベイク処理されますRequiredAttribute_ValidationError。カスタム検証属性を作成できます。

public class MyRequiredAttribute : RequiredAttribute
{
    public MyRequiredAttribute()
    {
        ErrorMessageResourceType = typeof(Messages);
        ErrorMessageResourceName = "Required";
    }
}

次に、ファイル内で文字列Messages.resxを定義します。Required

Required => É necessário digitar o {0}.

最後に、ビューモデルプロパティを次のカスタム属性で装飾します。

public class MyViewModel
{
    [MyRequired]
    public int Foo { get; set; }
}
于 2011-03-05T15:39:11.120 に答える
0

どうですか

[Required (ErrorMessageResourceName="Required",ErrorMessageResourceType=typeof(Messages)]

public string Foo { get; set; }

Required => É necessário digitar o {0}.

または

Required => {0} field is required.

完全な asp.net mvc ローカリゼーション ガイドについては、以下のリンクを参照してください。 asp.net mvc ローカリゼーション ガイド

于 2011-03-05T16:36:37.290 に答える
0

このように追加するだけです

[Required(ErrorMessage = "Your Error Message, here..!")]
于 2015-08-25T08:48:49.363 に答える