如何在自定义类中处理ActionResult?

时间:2013-07-09 09:53:58

标签: asp.net-mvc-4

我有一个类(在.net 4.5上的mvc4 razor项目中)并希望在其上处理重定向方法,并且不希望从控制器类继承。  我该如何处理?它会返回ActionResult以在某些情况下重定向用户,例如注销

我的主要课程:

public class SecuritySrv 
{
  public ActionResult Redirect()
    {

        return RedirectToAction("Logout", "Account", new { area = "" });
    }
}

我想在一些控制器中使用它,如下所示:

 public ActionResult AccountHome()
    {
      SecuritySrv SecurityService =new SecuritySrv()
       if(.....)
      return SecurityService.Redirect();


     return view();
   }

2 个答案:

答案 0 :(得分:1)

您可以在任何地方使用此代码,并且您不需要UrlHelper或访问上下文,因此您不需要继承Controller类。

        RouteValueDictionary rvd = new RouteValueDictionary
            {
                {"controller", "Profile"}, 
                {"action", "Users"}, 
                {"area", ""}
            };
        return new RedirectToRouteResult(rvd);

答案 1 :(得分:0)

控制器的RedirectToAction方法只是创建RedirectToRouteResult的助手,您可以在班上自己创建它:

public class SecuritySrv 
{
    public ActionResult Redirect()
    {
        RouteValueDictionary routeValues = new RouteValueDictionary();
        routeValues["action"] = "Logout";
        routeValues["controller"] = "Account";
        routeValues["area"] = "";

        return new RedirectToRouteResult(routeValues);
    }
}

并按照您想要的方式从您的控制器调用此方法。