2013-06-12 24 views
1

我有一個jquery ajax調用我的控制器動作。 現在在我的控制器中,它被捕獲了。現在我需要調用我的ajax調用的錯誤函數。如果我拋出錯誤,這將起作用。有沒有其他的方法來調用錯誤函數。從控制器的catch產生ajax調用出錯

再說一遍,我的控制器的動作的返回類型是string/void。

+0

你能提供顯示你已經嘗試過的代碼嗎? – Rob

回答

3

寫在你的行動Throw new HttpException();這將調用錯誤你的Ajax功能,以及與此$就法功能error:function() {do something }

4

我現在已經驗證了這一點處理它,所以我張貼它作爲一個答案。你可以像@Timur提到的那樣拋出一個異常,但是它有一些你可能不需要/需要的開銷。

在您的操作方法中,您可以將Response.StatusCode設置爲錯誤值(300,400或500範圍內的任何值),並且它會導致jQuery調用錯誤處理程序而不是成功處理程序。

+0

如果我需要傳遞一個實際的錯誤消息,使用你建議的那個響應,然後在alert中顯示它,我怎麼能夠在控制器中管理這個過程,如果可以的話,我怎樣才能捕捉它.js文件? –

+0

還有一個'Response.StatusDescription',你可以設置任何你想要的字符串值。我相信這是jQuery'error' ajax處理程序中的最後一個參數。另外,爲了修改我的原始答案,處理所有這些問題的更正確的MVC方式可能是返回一個'HttpStatusCodeResult',而不是直接在'Response'對象上設置值。 –