私が取り組んでいるアプリでは、特定のボタンをクリックすると、いくつかの関連するテキストボックスで検証が実行されるという要件があります。合格しなかった場合は何も発生しません。合格しなかった場合は、AJAX呼び出しから発生するアクションが発生します。このAJAX呼び出しは、操作の成功に関するメッセージを返します。
これが発生している私の部分的なビューは、次のようになります。
<div>
<div id='cell-phone'>
@Model.ValidationMessageFor(x=>x.Model.CellNumber)
@Model.TextBoxFor(x=>x.Model.CellNumber)
</div>
<div id='pager'>
<!-- Ditto, only x.Model.Pager; yes, some people use pagers still. -->
</div>
<div id='page-address'>
<!-- ... x.Model.PageAddress ... -->
</div>
<div id='pager-test'>
<a href='#' id='test-pager' class='button'>Test</a>
<span id='test-result'></span>
</div>
</div>
<script>
var $cellNum = $('#cell-phone input'),
$pagerNum = $('#pager input'),
$pageAddress = $('#page-address input'),
$testPager = $('#pager-test'),
$testResult = $('#test-result');
$(document).ready(function () {
$testPager.click(function () {
pagerTest();
});
});
function pagerTest() {
var args = { address: $pageAddress.val() };
$.getJSON('@Url.Action("SendTestPage")', args, function(result) {
$testResult.html(result.Message);
});
}
</script>
...サーバーレベルでダウン...
public JsonResult SendTestPage(string address)
{
// SNIP: Other unnecessary details.
var result = new EmailSendResult
{
success = SendEmailMethod(address)
};
result.message = result.success
? "Message sent!"
: "Couldn't send message...";
return result;
}
....
public class EmailSendResult
{
public bool success;
public string message;
}
質問:メッセージ/成功の値を取り戻すことはできますが、ビューモデルの検証を実行する必要もあります。AJAX呼び出しを使用してこれを行う方法がわかりません。私の疑いは、A)仕事に間違ったツールを使用しているか、B)1つの仕事に正しいツールを使用しているが、別のものが必要であるということです。検証を実行させるために何が欠けていますか?