1

假设我们有这样的动作:

public ActionResult Display(long Id){

  //Do something

return RedirectToAction(//To the Caller)

}

所以Display一些视图调用的动作,比如:

索引视图@Html.ActionLink("Show", "Display", new { Id=@Model.Id } )

所以我需要Displayreturn RedirectToAction("Index")

或者

编辑视图@Html.ActionLink("Show", "Display", new { Id=@Model.Id } )

我需要Displayreturn RedirectToAction("Edit")

等等。

我们如何才能找到调用了哪个动作Display并在动作结束时返回给调用者的动作呢?你的建议是什么?

4

3 回答 3

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);
}
于 2012-05-19T13:43:56.243 回答
1

如果您不想将变量传递给重定向操作方法,您也可以检查Request.UrlReferrer并改用它。

public ActionResult Display(long Id){

    var caller = Request.UrlReferrer != null 
        ? Request.UrlReferrer : "DefaultRedirect";

    // do something

    return Redirect(caller);
}
于 2012-05-19T22:45:39.653 回答
1

您可以使用 returnUrl 参数。

在来电者上:

@Html.ActionLink("Show", "Display", new { returnUrl = this.Url.PathAndQuery })

并且您的 Display 操作所要做的就是重定向到 returnUrl:

this.Redirect(returnUrl);

这对于您将来可能遇到的任何其他情况都足够灵活。

于 2012-05-20T11:05:22.077 回答