ActionInvoker.InvokeAction(context, "Method" ) - 如何将参数传递给调用的方法?



嗨,我有我的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方法中它有所有的默认值。

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

我不知道从我的问题中是否清楚,但我想要实现的是,我不想在我的控制器动作中捕获任何异常,并且仍然得到关于错误的好看消息。满足我的解是:

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();
    }

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

如果你想从默认的模型绑定源(query, form, route…)中传递一些自定义参数,把它们包装在一些类中,并为它实现你的自定义模型绑定(或valueprovider,但我认为modelbinder在这里更合适)。

相关内容

最新更新