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