2010-08-26 33 views
1

好奇最好的做法是將錯誤返回到控制器的視圖,其中錯誤不是真正的驗證錯誤,但更像是「用戶不是找到「或」服務超時「類型的錯誤。 (在ASP.NET MVC2框架中)如何返回錯誤從控制器查看不綁定到特定的模型屬性

我一直將它們添加到ModelState的模型錯誤中,但這看起來不合適。 (雖然易於實施和維護)

示例 - 用戶嘗試登錄,且其憑據與已知用戶不匹配。

回答

1

我相信你需要稍微清楚些什麼,你說的錯誤。

應該使用特定的異常處理程序來處理異常(超時,數據庫錯誤等)(尤其是因爲您通常不希望將錯誤消息顯示給最終用戶)。

在這種情況下,請查看過載控制器上的OnException()方法。 (或具有所有的控制器從具有重寫以避免重複該方法的共同ControllerBase繼承)

您可能還需要處理異常時檢查的filterContext.HttpContext.IsCustomErrorEnabled值,以確定是否公開詳細的異常信息,或者混淆了。

記住異常應該是例外情況 - 「正常」操作不應該導致異常

其他類型的你提的錯誤更像是「無法處理請求由於業務規則/無效輸入「(或類似),在這種情況下,向ViewModel添加錯誤消息似乎是適當的。他們可能不是直接的驗證錯誤,但他們很可能是用戶輸入的結果

0

我剛剛研究過這個,我認爲對於網絡相關的錯誤等等,這是必然發生的,它是確定使用TempData(但不要把Exception放在裏面,但是隻有異常消息,出於安全原因)。

http://forums.asp.net/p/1460169/3353779.aspx