2012-05-19 2 views
0

Предположим, у нас есть действие, как:Перенаправление на действия вызывающего абонента в ASP.NET MVC3

public ActionResult Display(long Id){ 

    //Do something 

return RedirectToAction(//To the Caller) 

} 

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

Index View: @Html.ActionLink("Show", "Display", new { [email protected] })

Поэтому мне нужно в Display: return RedirectToAction("Index")

or

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

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

и так далее.

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

+0

Вы хотите сделать RedirectToAction в действии отображения? – Shyju

+0

Копия http://stackoverflow.com/questions/815229/how-do-i-redirect-to-the-previous-action-in-asp-net-mvc? – ingo

ответ

2

Как насчет передачи еще одного параметра вместе с id в методе 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); 
} 
0

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

public ActionResult Display(long Id){ 

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

    // do something 

    return Redirect(caller); 
} 
0

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

На вызывающему:

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

и отображаемая действие все, что вам нужно сделать, это перенаправляется на ReturnUrl:

this.Redirect(returnUrl); 

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

Смежные вопросы