5

私はブートストラップ CSS フォーム スタイルを使用しています。これどうやってするの?

問題は、投稿時にのみ起動するカスタムバリデーターを除いて、フォームを送信する前にすべての検証が ajax で起動することです。したがって、両方のシナリオでそれが起こることを確認する必要があります。

http://twitter.github.com/bootstrap/base-css.html#forms

4

3 に答える 3

8

onErrorjquery.validate.unobtrusiveの関数内に、次の.addClass("error")ような行を追加するだけです。

function onError(error, inputElement) {  // 'this' is the form element
  var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"),
      replace = $.parseJSON(container.attr("data-valmsg-replace")) !== false;

  container.removeClass("field-validation-valid").addClass("field-validation-error");
  error.data("unobtrusiveContainer", container);
  container.parents(".field-encapsulator:first").addClass("error");

  if (replace) {
    container.empty();
    error.removeClass("input-validation-error").appendTo(container);
  }
  else {
    error.hide();
  }
}
于 2012-08-18T09:47:01.247 に答える
5

ASP.NET MVCは、field-validation-errorクラスをエラーメッセージ要素に追加し、 input-validation-errorJavaScriptを介してサーバー側とクライアント側の両方でコントロールを形成します。コードに応じて、フォームコントロールとそのラベルが同じ包含要素の下にある場合とない場合がありますが、包含要素はありません。また、その場合でも、MVCは、前述のクラスを、包含要素ではなく、フォーム制御およびエラーメッセージ要素に設定します。

Html.EditorForModel()また、生成されたマークアップを使用してフォームを自動生成すると、次のようになります。

<div class="editor-label"><label for="foo">Foo</label></div>
<div class="editor-field"><input name="foo"/></div>

control-groupTwitterBootstrapのクラスにマップできる要素は含まれていません。テンプレートを追加することで、このテンプレートを変更できますEditorTemplates/Object.cshtml

TwitterBootstrapをASP.NETMVCに適合させることをお勧めしますが、その逆はお勧めしません。

于 2012-08-18T04:44:37.187 に答える