2

嗨,我有我的 mvc 应用程序和这段代码片段:

    protected override void OnException(ExceptionContext filterContext)
    {
        base.OnException(filterContext);
        ActionInvoker.InvokeAction(filterContext, "ErrorMessage");
    }

    public ActionResult ErrorMessage(ExceptionContext filterContext)
    {
        ViewModel<Exception> viewModel = ViewModelFactory.CreateFor(filterContext.Exception);
        return View(viewModel);
    }

问题是我不能将参数传递给方法。我以为是这个 filterContext 但在 ErrorMessage 方法中它具有所有默认值。

所以我的问题是 - 如何将一些值传递给我调用的方法?

4

2 回答 2

2

我不知道我的问题是否清楚,但我想要实现的是我不想在我的控制器操作中捕获任何异常,并且仍然会收到关于错误的漂亮消息。所以我满意的解决方案是:

protected override void OnException(ExceptionContext filterContext)
    {
        base.OnException(filterContext);
        TempData.Add(MyCommons.Exception, filterContext.Exception);
        var controllerName = filterContext.RequestContext.RouteData.Values["Controller"];
        filterContext.Result =
            new RedirectToRouteResult(new RouteValueDictionary(new {controller = controllerName, action = "Error"}));
        filterContext.ExceptionHandled = true;
        filterContext.HttpContext.Response.Clear();

    }
于 2011-12-21T17:25:51.013 回答
1

您不将参数传递给调用的操作,而是使用模型绑定

如果您想从默认模型绑定源(查询、表单、路由..)中传递一些自定义参数,请将它们包装在某个类中并为其实现您的自定义模型绑定器(或 valueprovider,但我认为 modelbinder 更适合这里) .

于 2011-11-08T11:12:40.950 回答