我正在处理一个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);
}