と を使用ASP.NET MVC4
しjQuery Validate
てjQuery Validate unobtrusive
います。
フォームにはさまざまな要素がありますが、検証する必要がある要素は 1 つだけです。他の要素は検証する必要はありません。基本的に何が起こるかは、番号を受け入れるテキストボックスと、このテキストボックスに番号を取り、番号が存在するかどうかを確認するためにリモート呼び出しを行うボタン (フォームを送信しない) があることです。そうでない場合は、エラーを表示する必要があります。メッセージ。
私のビューのコード:
<td class="edit-label">Change Control ID/Incident Number: <span class="required">**</span></td>
<td>
@Html.TextBoxFor(x => x.ChangeIncidentNumber)
<button id="verifyButton" type="button">Verify</button>
@Html.ValidationMessageFor(x => x.ChangeIncidentNumber)
</td>
私のビューモデル:
public class SearchServerViewModel
{
// Partial view model
public string ChangeIncidentNumber { get; set; }
}
テキストボックスの私の HTML 出力:
<td class="edit-label">Change Control ID/Incident Number: <span class="required">**</span></td>
<td>
<input data-val="true" data-val-required="Required" id="ChangeIncidentNumber" name="ChangeIncidentNumber" type="text" value="792952" />
<button id="verifyButton" type="button">Verify</button>
<span class="field-validation-valid" data-valmsg-for="ChangeIncidentNumber" data-valmsg-replace="true"></span>
</td>
私のjQueryコード:
<script src="/Assets/JavaScripts/jquery-validate/jquery.validate.min.js"></script>
<script src="/Assets/JavaScripts/jquery-validate/jquery.validate.unobtrusive.min.js"></script>
<script>
$(document).ready(function () {
$("#ChangeIncidentNumber").validate({
rules: {
ChangeIncidentNumber: {
required: true,
remote: '/Server/ValidateChangeIncidentNumber'
}
},
messages: {
ChangeIncidentNumber: {
required: "Required",
remote: "custom message:"
}
}
});
$('#verifyButton').click(function () {
var isValid = $('#ChangeIncidentNumber').valid();
});
});
</script>
私の行動方法:
public ActionResult ValidateChangeIncidentNumber(string ChangeIncidentNumber)
{
// Do whatever needs to be done
return Json("Test error text", JsonRequestBehavior.AllowGet);
}
私のweb.configで:
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
必要な部分が機能し、テキスト ボックスが空の場合は Required メッセージが表示されます。しかし、値がある場合、それは私のアクションメソッドにヒットしていません。なぜかわからない?