私は MVC3 アプリケーションを作成しており、ページの 1 つで、ページングと並べ替えを使用してテーブルに表示されるアイテムのリストを取り戻します。
ただし、買い戻されたレコードが一定数を超えた場合は、さらに検索を絞り込むようにユーザーに通知するメッセージを表示したいと考えています。
Response.StatusCode
上記の条件が満たされている場合、コントローラーの を変更することでこれを実装しました。
public PartialViewResult VerbatimGridUpdate(VerbatimFormModel model)
{
if (ModelState.IsValid)
{
var mod = ModelBuilder.GetVerbatimFormModel(model);
if (mod.Verbatims.Count() > 10000)
{
HttpContext.Response.StatusCode = 33;
}
return PartialView("_VerbatimGrid", mod);
}
else
{
return PartialView(model.Verbatims);
}
}
そして、マークアップでは、Ajax フォームの OnFailure イベントを使用してこの失敗をキャプチャします。
function FailureLoading(ajaxContext) {
if (ajaxContext.status == "33") {
var ul = $("#validationSummary ul");
$("ul").empty();
ul.append("<li>" + "Too many records returned, please refine your search." + "</li>");
}
}
</script>
<div class="filters" >
@using (Ajax.BeginForm("VerbatimGridUpdate", null, new AjaxOptions { HttpMethod= "Get", UpdateTargetId = "grid-container", OnBegin = "StartLoading", OnSuccess = "FinishLoading", OnFailure="FailureLoading"}, new { id = "VerbatimListForm", name="VerbatimListForm" }))
{
ローカルではすべて正常に動作しますが、UAT サーバーにデプロイするとすぐに、失敗イベントは発生せず、すべてのレコードが表示されます。なぜ私はこの行動の違いを得ているのか分かりません。どんなアイデアでも大歓迎です。ありがとうございました。