jquery를 사용하여 컨트롤러에 양식 데이터를 게시하는 데 문제가 있습니다.ajax 게시 함수를 추가 할 때 MVC3 검증에 실패했습니다.
jquery를 사용하여 게시물을 만들지 않으면이 코드가 작동하고 유효성 검사가 제대로 수행됩니다.
<div id="window">
@using (Html.RequiredFieldsMessage()){}
@using (Html.BeginForm("","",FormMethod.Post,new{id="card-payment"}))
{
@Html.ValidationSummary(true, "Please fix the errors below.")
<div class="inputForm no-border">
<div class="fr">
@Html.LabelFor(model => model.DpsPaymentModel.CardHolderName)
@Html.EditorFor(model => model.DpsPaymentModel.CardHolderName)
@Html.ValidationStyledMessageFor(model => model.DpsPaymentModel.CardHolderName, false)
</div>
<div class="fr">
@Html.LabelFor(model => model.DpsPaymentModel.CardNumber)
@Html.EditorFor(model => model.DpsPaymentModel.CardNumber)
@Html.ValidationStyledMessageFor(model => model.DpsPaymentModel.CardNumber, false)
</div>
<div class="fr">
@Html.LabelFor(model => model.DpsPaymentModel.DateExpiry)
@Html.EditorFor(model => model.DpsPaymentModel.DateExpiry)
@Html.ValidationStyledMessageFor(model => model.DpsPaymentModel.DateExpiry, false)
</div>
<div class="fr">
@Html.LabelFor(model => model.DpsPaymentModel.Cvc2)
@Html.EditorFor(model => model.DpsPaymentModel.Cvc2)
@Html.ValidationStyledMessageFor(model => model.DpsPaymentModel.Cvc2, false)
</div>
<div class="fr">
@Html.LabelFor(model => model.DpsPaymentModel.Amount)
@Html.EditorFor(model => model.DpsPaymentModel.Amount)
@Html.ValidationStyledMessageFor(model => model.DpsPaymentModel.Amount, false)
</div>
<div class="fr">
<button type="submit" id="process-payment">Submit</button>
</div>
</div>
}
</div>
내보기에 이것을 추가하면. 유효성 검사는 항상 true로 반환됩니다. 내 HTML은 부분보기에 올바른 jquery 유효성 검사 스크립트를로드하는 동일한보기에 없습니다.
$("#process-payment").click(function() {
event.preventDefault();
var form = $("#card-payment");
$.validator.unobtrusive.parse(form);
if (form.validate()) {
console.log("valid");
$.ajax({
url: '/payment/processcardpayment',
type: "POST",
data: form.serialize(),
success: function (data) {
console.log(data);
},
error: function (jqXhr, textStatus, errorThrown) {
alert("Error '" + jqXhr.status + "' (textStatus: '" + textStatus + "', errorThrown: '" + errorThrown + "')");
},
complete: function() {
// $("#ProgressDialog").dialog("close");
}
});
} else {
console.log("invalid");
}
});
다시 한번 감사드립니다! –
덕분에 매우 도움이되었습니다. – Mary