2016-09-28 180 views
1

我需要兩種模式在我看來。所以,正如我所建議的那樣,我創建了兩個部分視圖:Entete和ChampsFormulaireInvalidite,都與他們的模型。部分查看全視圖

我的索引視圖使這兩種觀點:

<head> 
    <title>Formulaire d'invalidité</title> 
</head> 

@{Html.RenderAction("Entete");} 
@{Html.RenderAction("ChampsFormulaireInvalidite");} 

在Entete控制器,我有時也捕捉異常。當它發生時,我希望整個頁面被錯誤頁面替換。我嘗試這樣做:

public PartialViewResult Entete() 
    { 
     try{ 
      <some actions> 
       return PartialView ("Entete", model) 
      } 
     catch(Exception){ 
       return PartialView ("Error") 
      } 
    } 

當然,因爲我返回PartialView,只有我的網頁上半年顯示錯誤觀點,而另一半則顯示一個表單(ChampsFormulaireInvalidite視圖)。當發生異常時,我希望重定向到完整的錯誤頁面。

有什麼建議嗎?

我試圖把一個嘗試catch在我的索引方法,但沒有成功:

public ActionResult Index() 
    {  
     try{ 
      return View("Index"); 
      } 
     catch(Exception){return View("Error")} 
    } 
+0

儘可能地,當您想要以接觸基礎結構(在本例中爲視圖)的方式處理錯誤時,請使用「全局」錯誤處理程序,例如Global.asax中的HandleError屬性或Application_Error。 CS。 – 2016-09-28 20:34:26

+0

您的第一個示例是爲返回部分視圖而編寫的,因此您將返回PartialView,從而使錯誤頁面顯示爲部分視圖。除此之外,你從'RenderAction'調用動作,所以無論返回什麼,它都會出現在頁面中。如果你把它作爲一個未處理的異常處理,會發生什麼? – Luke

回答

0

由於這個視頻:https://www.youtube.com/watch?v=nNEjXCSnw6w

至於建議,我打開我的web.config中的customErrors:

<system.web> 
... 
    <customErrors mode="On" /> 
</system.web> 

而加入下一個視圖視圖Error.cshtml /共享:

@model System.Web.Mvc.HandleErrorInfo 
@{ 
    ViewBag.Title = "Erreur"; 
} 
<h1 class="text-danger">Error</h1>