您好我有我的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方法中它具有所有默认值。
所以我的问题是 - 如何将一些值传递给我调用的方法?
答案 0 :(得分: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();
}
答案 1 :(得分:1)
您不会将参数传递给调用的操作,而是使用模型绑定。
如果你想从默认的模型绑定源(查询,表单,路径......)中传递一些自定义参数,请将它们包装在某个类中并为它实现自定义模型绑定器(或valueprovider,但我认为modelbinder更多适当的)。