私はブートストラップ CSS フォーム スタイルを使用しています。これどうやってするの?
問題は、投稿時にのみ起動するカスタムバリデーターを除いて、フォームを送信する前にすべての検証が ajax で起動することです。したがって、両方のシナリオでそれが起こることを確認する必要があります。
私はブートストラップ CSS フォーム スタイルを使用しています。これどうやってするの?
問題は、投稿時にのみ起動するカスタムバリデーターを除いて、フォームを送信する前にすべての検証が ajax で起動することです。したがって、両方のシナリオでそれが起こることを確認する必要があります。
onError
jquery.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();
}
}
ASP.NET MVCは、field-validation-error
クラスをエラーメッセージ要素に追加し、 input-validation-error
JavaScriptを介してサーバー側とクライアント側の両方でコントロールを形成します。コードに応じて、フォームコントロールとそのラベルが同じ包含要素の下にある場合とない場合がありますが、包含要素はありません。また、その場合でも、MVCは、前述のクラスを、包含要素ではなく、フォーム制御およびエラーメッセージ要素に設定します。
Html.EditorForModel()
また、生成されたマークアップを使用してフォームを自動生成すると、次のようになります。
<div class="editor-label"><label for="foo">Foo</label></div>
<div class="editor-field"><input name="foo"/></div>
control-group
TwitterBootstrapのクラスにマップできる要素は含まれていません。テンプレートを追加することで、このテンプレートを変更できますEditorTemplates/Object.cshtml
。
TwitterBootstrapをASP.NETMVCに適合させることをお勧めしますが、その逆はお勧めしません。