2013-03-03 126 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(); 
相关问题