0

私のasp.netmvc4 アプリケーションには、次のようなエラー ビューがあります。

@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が常に null であることです。これの理由は何ですか?

4

3 に答える 3

1

実際、これは良い質問です。問題のモデルをビューに渡す必要はありません。必要なことは、適切なフィルターが設定されていることを確認することです。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 モデルが読み込まれ、エラー ビューに自動的に渡されます。

于 2014-01-27T21:47:29.570 に答える