2010-11-19 8 views
1

私は現在、控えめなjqueryクライアントの検証でASP.NET MVC 3を使用しています。カスタムValidationMessageテンプレート

デフォルトでは、ValidationMessageForは特定のクラスと属性が設定されたspanタグを生成します。代わりに別のテンプレートを生成したいと思います。たとえば、特定の背景イメージを持つdivタグが必要な場合があります。

これはまったく可能ですか、そこからプレーンテキストのエラーメッセージを取得するだけで、自分のスタイリングを行うことはできますか? MVC 2で

答えて

0

おかげで、spanがハードコーディングされています。 ValidationMessageForの代わりにdivを使用する方法はありません。

あなたは組み込みのヘルパーがそれをどうするかのようなメッセージが取得できます。

if (modelError != null) { 
    builder.SetInnerText(GetUserErrorMessageOrDefault(htmlHelper.ViewContext.HttpContext, modelError, modelState)); 
} 

    private static string GetUserErrorMessageOrDefault(HttpContextBase httpContext, ModelError error, ModelState modelState) { 
     if (!String.IsNullOrEmpty(error.ErrorMessage)) { 
      return error.ErrorMessage; 
     } 
     if (modelState == null) { 
      return null; 
     } 

     string attemptedValue = (modelState.Value != null) ? modelState.Value.AttemptedValue : null; 
     return String.Format(CultureInfo.CurrentCulture, GetInvalidPropertyValueResource(httpContext), attemptedValue); 
    } 
+0

を私は上記のコードを試していないが、サーバー側の検証のようです。私は、完全に異なる実装を持つjqueryの邪魔にならない検証ライブラリでクライアント側の検証を行っています。 – MVCQuestioner

+0

いいえ、それはいくつかの異なるカウントでは正しくありません。サーバーとクライアントの検証は「全く異なる実装」ではありません。両方とも 'ValidationMessageFor'から出てきます。お気軽にソースコードを参照してください。たとえば、jQueryバリデーターなどでデフォルトの検証メッセージを変更できますが、それはあなたの質問の一部でもある 'span' - ' 'div'を実行しません。 –

+0

右。私が本当に疑問に思っていたのは、クライアント側の検証を行うときに、これがspanからdivに変わるかどうかということでした。私の推測では、上記のコードがValidationMessageForのjavascriptテンプレートをサーバー側とクライアント側の両方で自動的に生成しない限り、javascriptでクライアント側の完全な別の実装が必要である可能性があります。それを一箇所で行うのは不完全です。だから、このコードもおそらく起こるはずです。 – MVCQuestioner

関連する問題