重定向到ASP.NET MVC3中的调用者操作

时间:2012-05-19 13:38:14

标签: asp.net-mvc asp.net-mvc-3 action redirecttoaction

假设我们有类似的行动:

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并在操作结束时返回到调用者操作?你的建议是什么?

3 个答案:

答案 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);

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