2011-11-18 48 views
0

我有一個控制器,該控制器將數據傳送給視圖:如何在ASPNET.MVC中返回一個空視圖?

public ViewResult Details(int id) 

在這種情況下該ID無效,我想返回一個空的或錯誤的觀點,而不是將數據傳遞到詳細信息查看是強類型等待無法到達的數據。

我該如何處理通用錯誤視圖?

回答

1

我們在我們的基本控制器上有一個錯誤操作,其中的實際控制器從繼承。如果輸入未通過驗證,則重定向到Error操作,以傳遞將在視圖中顯示的一些錯誤消息文本。這允許您在所有控制器操作中都有標準的錯誤視圖。

1

你可以重定向到任何視圖,你想:

return View("Error", "This is a error message"); 

上面的代碼會重定向到Error.cshtml視圖,並通過一個字符串的消息。

1

根據需要只返回你的錯誤觀點:

if(// id is invalid) 
{ 
return View("MyErrorView"); 
} 
1

如果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> 

+0

通過在web.config全局處理錯誤的問題是,客戶最終得到一個302(重定向),而比期望的404(未找到)。但我同意使用正確的HTTP代碼是一種好方法。 –

相關問題