使用filterContext.Result时如何重定向到Action?

时间:2013-11-11 16:13:15

标签: c# asp.net-mvc

在我的OnActionExecuting事件中,我想重定向到控制器操作方法,但似乎我必须传递URL。

我不想对网址进行硬编码,尤其是当我不知道根网址时,即它可能是子网域或其他内容。

filterContext.Result = new RedirectResult("/home/contact");

我是否缺少一些我可以重定向到行动的重载?

4 个答案:

答案 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" }));