我有两个项目MVCMembership和主要的web项目,使用会员资格,我需要在我的主要web项目中的控制器的会员项目中的控制器中获取一些日期。这是我尝试的: 这是我的会员控制器
public ViewResult Index(int? index)
{
if (Roles.IsUserInRole("Group Admin"))
{
string[] roles = Roles.GetRolesForUser();
var GroupUsers = RedirectToAction("UsersInGroup", "Account", new { Area = "" });
这是我的网络项目控制器中的操作:
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;
}
现在把它放在上下文中。是否可以这样做?
答案 0 :(得分:1)
有两种方法可以执行此操作。
错误: 控制器中的操作只是方法,因此您可以直接调用它们,您需要创建控制器的实例,然后调用您的方法:
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();
答案 1 :(得分:0)
如果你可以从其他项目调用控制器,你可以使用Response.Redirect(
public EmptyResult Home()
{
Response.Redirect("http://YourDoimein.com/Controller/Action");
}