2014-02-28 80 views
0

我有一個Ajax的形式,我需要打一個JavaScript函數上的失敗,就像這樣:Ajax表單驗證在MVC

using (Ajax.BeginForm("UpdateStages", new AjaxOptions 
{ 
    HttpMethod = "POST", 
    OnSuccess = "refreshSearchResults('" + @Model.First().ItemCode + "')", 
    OnFailure = "showError" 
})) 

隨着showError功能以Ajax的上下文響應,並將它附加到div,像這樣:

function showError(ajaxContext) 
{ 
    var response = ajaxContext.responseText; 
    response = $($.trim(response)); 
    var itemVersion = response.filter("div")[0].innerHTML.trim().toString(); 
    var error = response.filter("p")[0].outerHTML.toString(); 
    $("#" + itemVersion.replace(".", "") + "-UpdateStagesResults").empty(); 
    $(error).appendTo("#" + itemVersion.replace(".", "") + "-UpdateStagesResults"); 
} 

爲了使OnFailure被稱爲我有我的MVC控制器ActionResult,當發生錯誤:

Response.StatusCode = (int)HttpStatusCode.BadRequest; 
return PartialView(); 

它返回一個PartialViewViewBag中的錯誤消息。這在本地運行時工作正常,錯誤消息發送到showError函數,然後將錯誤附加到頁面。

的問題是,當我把申請到一個活的服務器(IIS7),阿賈克斯方面只是

壞請求

和例子並不:

<p>You have not entered a valid date.</p> 
<div style="display:none;">V7.0 </div> 

任何幫助將是偉大的!

回答

2

我有這個,

在IIS7默認錯誤設置,顯示詳細的錯誤消息只在本地,你的觀點將被替換爲默認的狀態代碼。

如果你想看到您的自定義錯誤,這添加到您的web.config

<system.webServer> 
    <httpErrors errorMode="Detailed" /> 
</system.webServer> 

應該對其進行排序

+0

謝謝你,我不知道這件事!我曾嘗試更改自定義錯誤設置,但沒有奏效。 – tomsullivan1989