在mvc 5中,当从不同的视图请求相同的视图时,确定要调用哪个操作方法



我正在处理一个MVC 5项目,我有一个案例,我从不同的视图调用相同的操作/视图,并且我想返回到请求来自的同一视图。例:假设我有三个视图A、B、C,A和C都在不同的时间呼叫B。现在我想在B操作完成后分别返回A或C。我必须从多个操作/视图中使用这个B视图,这样当B操作完成时,它会重定向到最初调用B的相应视图。我正在寻找一个通用的解决方案。最好的方法是什么?如果你们这些乐于助人的人能举一些例子,那将非常有帮助:)

我能够从SO本身的另一篇帖子中找到答案。我把它贴在这里,以防有人遇到这个问题。

要获得调用View的操作,请使用此

ViewContext.RouteData.GetRequiredString("action");

要获取调用View的控制器,请使用此

ViewContext.RouteData.GetRequiredString("controller");

到源的链接在这里

使用:

public ActionResult B()
{
    //do something
    return Redirect(Request.Referrer);
}

或者,试试这个:

public ActionResult A()//Or C
{
    return RedirectToAction("B",
        new { r = Request.Url.ToString() });
}

然后:

public ActionResult B()
{
    return Redirect(Request.QueryString["r"]);
}

这些是Controller中的通用解决方案,可满足您的目的。如果您想从视图中的按钮重定向,请使用以下方法:

<a href="@Request.UrlReferrer">B</a>

只需尝试此

public ActionResult Action()
  {
    return Redirect(Request.UrlReferrer.PathAndQuery);
  }

最新更新