假设我们有类似的行动:
public ActionResult Display(long Id){
//Do something
return RedirectToAction(//To the Caller)
}
某些视图调用Display
动作,例如:
索引视图:@Html.ActionLink("Show", "Display", new { Id=@Model.Id } )
所以我需要Display
:return RedirectToAction("Index")
或者
修改视图:@Html.ActionLink("Show", "Display", new { Id=@Model.Id } )
我需要Display
:return RedirectToAction("Edit")
等等。
我们如何找到哪个动作调用Display
并在操作结束时返回到调用者操作?你的建议是什么?
答案 0 :(得分:2)
如何在ActionLink方法中再传递一个参数和id?
@Html.ActionLink("Show", "Display", new { Id=@Model.Id ,from="Edit"} )
和
@Html.ActionLink("Show", "Display", new { Id=@Model.Id ,from="Index"} )
并在您的操作方法中,同时接受
public ActionResult Display(long Id,string from)
{
//Not 100 % sure what you want to do with the from variable value.
return RedirectToAction(from);
}
答案 1 :(得分:1)
如果您不想将变量传递给重定向操作方法,您还可以检查Request.UrlReferrer
并使用该变量。
public ActionResult Display(long Id){
var caller = Request.UrlReferrer != null
? Request.UrlReferrer : "DefaultRedirect";
// do something
return Redirect(caller);
}
答案 2 :(得分:0)
您可以使用returnUrl参数。
在来电者身上:
@Html.ActionLink("Show", "Display", new { returnUrl = this.Url.PathAndQuery })
并且你的显示操作所要做的就是重定向到returnUrl:
this.Redirect(returnUrl);
这对于您将来可能遇到的任何其他情况都足够灵活。