1

メンバーシップを使用する2つのプロジェクトMVCMembershipとメインWebプロジェクトがあり、メインWebプロジェクトのコントローラーからメンバーシッププロジェクトにあるコントローラーで日付を取得する必要があります.これは私が試すものです:これは私のメンバーシップコントローラーからのものです

public ViewResult Index(int? index)
    {
        if (Roles.IsUserInRole("Group Admin"))
        {
            string[] roles = Roles.GetRolesForUser();

            var GroupUsers = RedirectToAction("UsersInGroup", "Account", new { Area = "" });

これは私のWebプロジェクトコントローラでのアクションです:

public MembershipUserCollection UsersInGroup()
    {
        var groupResultSet = db.aspnet_UsersInGroups.Where(u => u.UserID == (Guid)Membership.GetUser().ProviderUserKey);
        var group = groupResultSet.Single().aspnet_Group;
        return group.Users;
    }

RedirectToAction が RedirectToRouteResult を返すため、これは機能しません。これを行う方法はありますか?

より明確にするために、1 つのクラスに 2 つの単純なメソッドがあると想像してください。

public somthing Method1()
{
    //doing something
    //call some other method
    var parm = Method2();
    //doing something whit parm
    return somethingelse;
}

public something Method2()
{
    //doing something
    return parm;
}

そして今、それを上からコンテキストに入れます。それは可能ですか?

4

2 に答える 2

1

これを実行するには 2 つの方法があります。

悪い点: コントローラーのアクションは単なるメソッドであるため、直接呼び出すことができます。コントローラーのインスタンスを作成してからメソッドを呼び出す必要があります。

public ViewResult Index(int? index)
{
    if (Roles.IsUserInRole("Group Admin"))
    {
        string[] roles = Roles.GetRolesForUser();
        var accountController = new AccountController()
        var GroupUsers = accountController.UsersInGroup();

良い点 : IOC コンテナーを MVC アプリケーションに接続する方法を読み、必要なメソッドをコントローラーから削除してサービスに配置し、サービスをコントローラーに注入します。

 public YourController:Controller
 {
     private IMembershipService  _membership 
     public YourController(IMembershipService membership)
     {
         _membership = membership;
     } 

     public ViewResult Index(int? index)
     {
       if (Roles.IsUserInRole("Group Admin"))
       {
           string[] roles = Roles.GetRolesForUser();

           var GroupUsers = _membership.UsersInGroup();
于 2013-03-04T21:15:34.690 に答える
0

他のプロジェクトからコントローラーを呼び出すことができる場合は、 Response.Redirect(

public EmptyResult Home()
  {
     Response.Redirect("http://YourDoimein.com/Controller/Action");
  }
于 2013-03-03T17:00:55.280 に答える