我有一個控制器,該控制器將數據傳送給視圖:如何在ASPNET.MVC中返回一個空視圖?
public ViewResult Details(int id)
在這種情況下該ID無效,我想返回一個空的或錯誤的觀點,而不是將數據傳遞到詳細信息查看是強類型等待無法到達的數據。
我該如何處理通用錯誤視圖?
我有一個控制器,該控制器將數據傳送給視圖:如何在ASPNET.MVC中返回一個空視圖?
public ViewResult Details(int id)
在這種情況下該ID無效,我想返回一個空的或錯誤的觀點,而不是將數據傳遞到詳細信息查看是強類型等待無法到達的數據。
我該如何處理通用錯誤視圖?
我們在我們的基本控制器上有一個錯誤操作,其中的實際控制器從繼承。如果輸入未通過驗證,則重定向到Error操作,以傳遞將在視圖中顯示的一些錯誤消息文本。這允許您在所有控制器操作中都有標準的錯誤視圖。
你可以重定向到任何視圖,你想:
return View("Error", "This is a error message");
上面的代碼會重定向到Error.cshtml視圖,並通過一個字符串的消息。
根據需要只返回你的錯誤觀點:
if(// id is invalid)
{
return View("MyErrorView");
}
如果ID無效,不返回空的內容,這實際上是在爲HTTP狀態404典型的故事 - 沒有找到 - MVC中,你可以處理很容易,就像這樣:
if (IdIsInvalid(id))
return HttpNotFound();
作爲替代方案,您可以撥打
throw new HttpException(404, "NotFound");
和處理你的404錯誤全球範圍內,例如在你的web.config設置:
<configuration>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="~/NotFound"/>
</customErrors>
</system.web>
通過在web.config全局處理錯誤的問題是,客戶最終得到一個302(重定向),而比期望的404(未找到)。但我同意使用正確的HTTP代碼是一種好方法。 –