2013-03-03 70 views
0

我有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。 有沒有辦法做到這一點?

更清晰想象你在一個類

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; 
} 

2種簡單的方法,現在把在上下文中從up.Is是可能做到這一點?

+0

因此,這些項目存在於相同的解決方案?有一個區域=「」,你有一個區域文件夾設置其中之一? – 2013-03-03 16:55:12

+0

我不明白你在這裏問什麼,你遇到什麼確切的問題。你能不能詳細說明並重新制定它? – 2013-03-03 16:56:43

+0

他們不是在同一個解決方案中,我導入我在web項目中的dll成員資格,並且我在其中有一個區域文件夾。我問有沒有辦法讓我從不同的項目中調用不需要的項目的行動,並從中獲得結果我稱之爲它。 – Skondiloza 2013-03-03 17:03:00

回答

0

如果你可以打電話從其他項目控制器,你可以只使用Response.Redirect(

public EmptyResult Home() 
    { 
    Response.Redirect("http://YourDoimein.com/Controller/Action"); 
    } 
+0

那麼,如果我這樣做,我如何返回結果,哪種類型是MembershipUserCollection行動,我稱之爲? – Skondiloza 2013-03-03 17:08:05

+0

我的意思是,我不知道這是甚至可能,這就是爲什麼我問。我知道我可以重定向到該行動,但我可以返回該結果。 – Skondiloza 2013-03-03 17:10:06

+0

Tou可以使用EmptyResult in Action – 2013-03-03 17:16:15

0

有執行此兩種方法

: 操作的控制器被簡單的方法,所以你可以直接打電話給他們,你需要創建和控制器的實例,然後調用你的方法:

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(); 
相關問題