Перенаправление на действие вызывающего абонента в ASP.NET MVC3

Предположим, у нас есть действие вроде:

public ActionResult Display(long Id){

  //Do something

return RedirectToAction(//To the Caller)

}

Итак, Display действие, вызываемое некоторыми представлениями, например:

Просмотр индекса: @Html.ActionLink("Show", "Display", new { [email protected] } )

Так что мне нужно в Display: return RedirectToAction("Index")

Or

Изменить представление: @Html.ActionLink("Show", "Display", new { [email protected] } )

Мне нужно в Display: return RedirectToAction("Edit")

и так далее.

Как мы можем узнать, какое действие вызывает Display и в конце действия возвращается действие вызывающего абонента? что вы предлагаете?


person Saeid    schedule 19.05.2012    source источник
comment
вы хотите выполнить RedirectToAction в действии отображения?   -  person Shyju    schedule 19.05.2012
comment
Копия stackoverflow.com/questions/815229/?   -  person ingo    schedule 19.05.2012


Ответы (3)


Как насчет передачи еще одного параметра вместе с идентификатором в методе ActionLink?

@Html.ActionLink("Show", "Display", new { [email protected] ,from="Edit"} )

и

@Html.ActionLink("Show", "Display", new { [email protected] ,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);
}
person Shyju    schedule 19.05.2012

Если вы не хотите передавать переменную методу действия перенаправления, вы также можете проверить Request.UrlReferrer и использовать его вместо этого.

public ActionResult Display(long Id){

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

    // do something

    return Redirect(caller);
}
person danludwig    schedule 19.05.2012

Вы можете использовать параметр returnUrl.

О звонящем:

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

и ваше действие Display все, что вам нужно сделать, это перенаправить на returnUrl:

this.Redirect(returnUrl);

Это достаточно гибко для любого другого случая, который может у вас возникнуть в будущем.

person Fabio Milheiro    schedule 20.05.2012