2016-09-28 116 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>