簡體   English   中英

在剃刀中獲取空異常作為模型

[英]Getting a null exception as model in razor

我在asp.net mvc4應用程序中出現如下錯誤視圖:

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Erreur";
}
<p>Take it easy</p>
<hgroup class="title">
    <h1 class="error">Erreur = @Model.Exception</h1>
    <h1 class="error">Controller = @Model.ControllerName</h1>
    <h1 class="error">Name = @Model.ActionName</h1>
    <h2 class="error">Une erreur s'est produite lors du traitement de la requête.</h2>    
</hgroup>

控制器代碼:

 public class HomeController : Controller
 {
     [HttpGet]
     public ActionResult Index()
     {
         return RedirectToAction("Search");
     }

     public ActionResult Error()
     {
         return View();
     }

     public ActionResult About()
     {
         ViewBag.Message = "Votre page de description d’application.";

         return View();
     }

     public ActionResult Contact()
     {
         ViewBag.Message = "Votre page de contact.";

         return View();
     }

問題在於Model始終為空。 這是什么原因呢?

您可以通過實例將模型對象的實例傳遞給View()方法。

public ActionResult Error()
{
    ErrorViewModel vm=new ErrorViewModel();
    vm.prop1="This is the error message";

    return View(vm);
}

您甚至沒有向視圖提供錯誤對象。

    public ActionResult Error()
    {



        return View();
    }

其實這是一個好問題。 您實際上並不需要將相關模型傳遞給視圖。 您需要做的是確保設置了適當的過濾器。 在MVC 4中,您可以在global.asax.cs中執行以下操作:

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
       filters.Add(new HandleErrorAttribute());
    }

確保在application_start中調用此方法:

    protected void Application_Start()
    {       
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);

        ModelBinders.Binders.DefaultBinder = new DevExpress.Web.Mvc.DevExpressEditorsBinder();
    }

現在,您的HandleErrorInfo模型將被填充並自動傳遞到您的錯誤視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM