1. ホーム
  2. asp.net-mvc

MVCで'data-val-number'メッセージの検証を@Htmlヘルパーで生成している間に変更する方法

2023-09-03 12:59:46

質問

このモデルを想定してください。

Public Class Detail
    ...
    <DisplayName("Custom DisplayName")>
    <Required(ErrorMessage:="Custom ErrorMessage")>
    Public Property PercentChange As Integer
    ...
end class

と表示されます。

@Html.TextBoxFor(Function(m) m.PercentChange)

はこのhtmlを進めます。

   <input data-val="true" 
    data-val-number="The field 'Custom DisplayName' must be a number." 
    data-val-required="Custom ErrorMessage"     
    id="PercentChange" 
    name="PercentChange" type="text" value="0" />

をカスタマイズしたい。 data-val-number エラーメッセージをカスタマイズしたいのですが、これは PercentChangeInteger . 変更するために、そのような属性を探していました。 range または何か関連するものは動作しません。

unobtrusiveのjsファイル自体を編集するか、クライアント側でオーバーライドする方法があるのは知っています。私は変更したいです data-val-number のエラーメッセージをサーバーサイドで他のものと同じように変更したいのです。

どのように解決するのですか?

これは簡単なことではありません。デフォルトのメッセージは、埋め込みリソースとして System.Web.Mvc アセンブリに埋め込まれたリソースとして保存されており、フェッチするメソッドは内部でシールされたインナークラス ( System.Web.Mvc.ClientDataTypeModelValidatorProvider+NumericModelValidator.MakeErrorString ). Microsoft でこれをコーディングしている人は、まるでトップ シークレットを隠しているようです :-)

次のものを見てみてください。 ブログ記事 をご覧ください。基本的には、既存の ClientDataTypeModelValidatorProvider を置き換える必要があります。 をカスタムのものに置き換える必要があります。

ハードコアなコーディングが必要なのが嫌なら、ビューモデル内のこの整数値を文字列に置き換え、カスタムバリデーション属性でパースし、カスタムエラーメッセージを提供することもできます (ローカライズすることもできます)。