0

クラス(.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();
   }
4

2 に答える 2

1

このコードはどこでも使用でき、UrlHelper やコンテキストへのアクセスは必要ないため、Controller クラスを継承する必要はありません。

        RouteValueDictionary rvd = new RouteValueDictionary
            {
                {"controller", "Profile"}, 
                {"action", "Users"}, 
                {"area", ""}
            };
        return new RedirectToRouteResult(rvd);
于 2013-07-09T11:31:06.263 に答える
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);
    }
}

そして、あなたが望む方法でコントローラーからこのメソッドを呼び出します。

于 2013-07-09T11:27:38.023 に答える