2012-03-06 10 views
0

double型のOrderNumberモデルプロパティがありますか?デフォルト値を変更したい "値 'abc'は注文番号に対して有効ではありません。英数字(または他の無効な)データが入力されたときにエラーメッセージが生成されましたが、モデルオブジェクトのOrderNumberプロパティに対してのみこれを実行します。私は正規表現のデータ注釈を使用しようとしましたが、これはクライアント側の検証では(カスタムエラーメッセージに関して)機能します。サーバー側では、データは基本プロパティのデータ型で失敗します。いくつかのフォームでは、入力オブジェクトがたくさんあるので、スピードの問題を引き起こすクライアント側のスクリプティングを無効にしなければならず、クライアントの一部ではスクリプトが無効になっているので、サーバー側でこのカスタムエラーメッセージが機能するようにします。入力されたデータ型が間違っている場合、どのようにカスタムエラーメッセージを設定できますか?ASP.NET MVC特定の数値プロパティ(DataAnnotations?)のエラーメッセージのカスタマイズ

これはまた、(例えば、私の表示ラベル注釈である[表示(ResourceTypeが= typeof演算(Localisation.Resources)、NAME = "OrderNumberLabel")])

+0

そのために独自のバリデータクラスを派生できませんか?そこには、クライアント側の検証(必要な場合)さえも処理できます。 –

+0

それは、本当に、私が後にしていることです。問題は、理想的には、それが二重にとどまることですか?それ以外の場合は、ほぼ半ば無意味な検証となります - 文字列にしてからもう一度検証してdoubleに変換する提案がありますか?コントローラでは、それは素晴らしいアイデアのようには思われません - そして、問題はそれが最初に蹴るように見えるプロパティの型変換への入力データであり、これが私の問題です。 –

+0

私はそれがちょうど意見だと思うが、質問はあるかもしれない:それは "ダブル"ですか?タイプ?結局のところ、あなたはUIをモデリングしているので、あなたは_about_ユーザーと話しています。彼らが空のフィールドが何であるかを理解していて、値が浮動小数点の場合、答えは「はい、それを二重にしますか?」と思います。あなたがする必要のあることは何でもしてください。 –

答えて

-1

これはによって達成することができる局在と互換性があることが必要ですDefaultModelBinder ResourceClassKeyプロパティーを設定します。

アプリケーションの下に「App_GlobalResources」フォルダを作成し、リソースファイルを追加します。 (名前を "MyResource.resx"とします)。

「PropertyValueInvalid」キーを追加してerrorTemplateを割り当てます(例:プロパティ「{1}」のコンテンツが無効です{0})。

それはのようになります。..

enter image description here

は今すぐ

DefaultModelBinder.ResourceClassKey = "MyResource"; 

は、あなたがカスタマイズしたエラーが表示されますのglobal.asaxに "のApplication_Start" に以下の行を追加します。(ノンについてJS)

enter image description here

+0

問題は指定されたプロパティのものだけでなく、_every_エラーメッセージに影響します - オーダーラインフィールドに「オーダー番号が無効です。それに数字だけを入力してください」という意味はありません。 _did_これ以上、または特定の指定されたプロパティのためだけにそれを行う方法がありますか? –

+0

それから、唯一の方法は、Modelで文字列として宣言し、数字[\ d] +、 – Manas

+0

不必要な余分な複雑化やコード/プロパティを追加してデータを強く入力しなくても済むことを避けることを望んでいました。私はすでに経験していますプロパティをOrderNumberTextに変更して正規表現で検証し、取得専用のプロパティOrderNumberをdoubleとして使用していますか?値を返す(私は多くのコードを変更する必要はないので、元のOrderNumberの入力ビューフィールドのみ) - これはモデルオブジェクト内にそれを保持しますが、それでもやや乱雑です –

関連する問題