在我的OnActionExecuting事件中,我想重定向到控制器操作方法,但似乎我必须传递URL。
我不想对网址进行硬编码,尤其是当我不知道根网址时,即它可能是子网域或其他内容。
filterContext.Result = new RedirectResult("/home/contact");
我是否缺少一些我可以重定向到行动的重载?
答案 0 :(得分:4)
我认为你应该能够获得UrlHelper
。
var Url = new UrlHelper(filterContext.RequestContext);
var url = Url.Action("Contact", "Home");
filterContext.Result = new RedirectResult(url);
或者您可以使用RedirectToRouteResult
并命名您的路线。 (这似乎是一个更好的答案)。
答案 1 :(得分:0)
您可以实例化UrlHelper
实例,然后让它为您创建网址。
答案 2 :(得分:0)
if (filterContext.ExceptionHandled) return;
Exception ex = filterContext.Exception;
filterContext.Result = new ViewResult
{
ViewName = "~/Views/Shared/HataVer.cshtml"
};
filterContext.ExceptionHandled = true;
return;
答案 3 :(得分:-1)
请尝试使用:
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action = "NameOfYourAction" controller = "NameOfYourController" }));