2011-11-28 65 views
0

我是c#和mvc3中的新成員,所以它可能是一個相當愚蠢的問題: 每當將錯誤消息發送到日誌文件時,我需要顯示Error.cshtml視圖。我可以從mvc3的類中返回一個視圖嗎?

我不想寫每次都返回視圖。這就是爲什麼我創建了一個類(稱爲「CatchError」),當發送任何錯誤時會自動調用它。

對於示例 - 我想表明的觀點,如果狀態在以下情況下是不是「真」:

if(status == "true") 
    LogMessageFM.SuccessMessage("Feature Management success:" + userid + "/" + features + "/" + shape + "/" + lab + "/" + priceList); 
else 
    LogMessageFM.UnsuccessMessage("Feature Management unsuccess:" + userid + "/" + features + "/" + shape + "/" + lab + "/" + priceList); 

我可以退回從階級的觀點? 或者我應該創建一個新的ActionResult,它會得到錯誤並返回帶有錯誤的視圖?

(但後來,我怎麼可能會導致它自動運行......有沒有這樣的選擇嗎?)

,我會很高興得到一些幫助。謝謝。

+0

目前尚不清楚你正在努力實現什麼。你想在拋出未處理的異常時顯示錯誤頁面? –

+0

控制器中有幾處發生錯誤的地方發送到日誌文件。然後我想顯示錯誤的視圖(與發送到日誌文件相同的錯誤)。 – ParPar

+0

但是在你的控制器中發生了什麼情況?什麼時候拋出異常?你可以提供一個控制器操作的例子,你正在寫日誌文件嗎? –

回答

0

很確定只要返回類型是ActionResult就可以返回視圖。默認情況下,如果你創建一個像對象一樣的類,並且你沒有system.web.mvc,你必須在你的文件中引用它,但除此之外,你應該很好。

using System.Web.Mvc; 

public ActionResult CatchError() 
{ 
    if(LogicFails) 
    { 
     return View(); 
    } 
    else 
    { 
     RedirectToAction("Index", "Home"); 
    } 
} 
當然

,因爲你返回一個ActionResult你就必須最終返回一些URL,但本質時,這是執行一個HTTP請求到這個網址的所有你說的是。

總之是的,希望這有助於!

快樂編碼! ;)

0

如果你的代碼中出現的異常和你有在你的web.config適當customErrors標籤,然後在defaultRedirect提到的URL將被顯示:

<customErrors mode="On" defaultRedirect="/Error/500" /> 

然後,您可以有一個將該URL(/Error/500)指向給定視圖的路由。

MSDN article on customErrors

下面

問題的defaultRedirect值可以在任何地方後點更新。所以,如果你已經在你的「家」控制器「CatchError的行動,你可能只是這樣做: -

<customErrors mode="On" defaultRedirect="/Home/CatchError" /> 

這意味着,如果你能捕獲錯誤的try catch塊例如,您可以將用戶重定向到您的CatchError操作。如果你沒有發現異常情況,你的用戶將自動發送到那裏。

+0

對這個問題抱歉,但是我怎樣才能改變路線中的「500」? – ParPar

相關問題