【问题标题】:Redirect from a method in a class to an action result in a controller从类中的方法重定向到控制器中的操作结果
【发布时间】:2014-05-07 17:53:24
【问题描述】:

我有一个 mvc 应用程序,当用户通过身份验证时, 从一个类中调用一个方法来确定用户的类型。

我想从类中的方法重定向到控制器中的操作结果。

如何从类中的方法重定向到控制器中的操作结果?

【问题讨论】:

  • 发布您的代码,不清楚您的要求...您是说您希望您的类方法返回 ViewAction?
  • 从一个类中的方法我想重定向到一个页面
  • 你需要发布一些代码......最终控制器必须在调用堆栈中才能工作。
  • 为什么要重定向到课堂上的操作?我认为您必须在操作中获取用户类型,然后重定向到操作结果。

标签: asp.net-mvc


【解决方案1】:

您想这样做可能有充分的理由,但我想为您推荐一个替代方案。 我建议您根据类中方法的结果重定向到操作,而不是在方法本身中进行重定向。

伪代码:

public ActionResult Index()
{
 var tmp = new YourClass();

if(tmp.UserType().Equals("Admin")
{
    return RedirectToAction("Admin", "Home");
}
if(tmp.UserType().Equals("User"))
{
    return RedirectToAction("User","Home");
}
}

【讨论】:

    【解决方案2】:

    首先,我认为从类中调用控制器操作不是一个好习惯。 您的类将与 MVC 控制器紧密耦合。 但是这样做是可行的:

        var context = new RequestContext(
        new HttpContextWrapper(System.Web.HttpContext.Current), 
        new RouteData());
    var urlHelper = new UrlHelper(context);
    var url = urlHelper.Action("Index", new { OtherParm = "other value" });
    System.Web.HttpContext.Current.Response.Redirect(url);
    

    这个例子来自this answer

    【讨论】:

      猜你喜欢
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多