MVC3 응용 프로그램을 작성 중이며 페이지 중 하나에 페이징 및 정렬이있는 테이블에 표시된 항목 목록을 가져 왔습니다.MVC 3 Ajax 양식 On UAT 서버에서 오류가 발생하지 않음
그러나 다시 구매 한 레코드가 특정 번호를 초과하는 경우 사용자에게 검색을 구체화하라는 메시지를 표시하려고합니다.
위의 조건이 충족되면 컨트롤러에서 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 서버에 배포로 작동 실패 이벤트가 해고되지 않고 모든 레코드가 표시됩니다. 나는 왜 내가이 행동의 차이를 얻고 있는지 알 수 없다. 어떤 아이디어라도 가장 환영받을 것입니다. 고맙습니다. 이것은 여러 가지 이유로 발생 될 수
HTTP 응답을 검사 할 때 반환되는 상태 코드는 무엇입니까? 33 또는 다른 것? – avesse
반환 된 상태 코드는 200 – saj
입니다. 그러면 IIS가 상태 코드를 무시할 것입니다. http://stackoverflow.com/questions/434272/iis7-overrides-customerrors-when-setting-response-statuscode를 참조하십시오 (그러나 아래의 Mark의 대답에 동의하며 HTTP 상태 코드는 잘못된 방법입니다). – avesse