Возврат к URL-адресу из метода действия в asp.net mvc - PullRequest
1 голос
/ 02 февраля 2010

Я использую asp.net mvc.

У меня есть ссылки, связанные со списком «Документ» ... при переходе по ссылкам вызывается метод действия для добавления документа в список избранных.

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

например:

MyPage

стр. 1 из 3

Document1 [добавить в избранное] (ссылка, которая вызывает метод действия)

Document2 [добавить в избранное] (ссылка, которая вызывает метод действия)

Document3 [добавить в избранное] (ссылка, которая вызывает метод действия)

Document4 [добавить в избранное] (ссылка, которая вызывает метод действия)

подкачка поддерживается в URL с параметрами строки запроса.

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

Ответы [ 5 ]

0 голосов
/ 03 марта 2010

Я бы отправил страницу с дополнительным параметром returnUrl, этот шаблон также используется самой командой .NET в AccountController:

<%= Html.ActionLink("LINKNAME", "ACTION", new { id = "DOCID", returnUrl = Request.Url.PathAndQuery } ) %>

Теперь ваше действие будет выглядеть примерно так:

public ActionResult ACTION(int id, string returnUrl)
{
     //do some stuff
     return Redirect(returnUrl);
}
0 голосов
/ 02 февраля 2010

Вы можете использовать Request.UrlReferrer, чтобы получить предыдущий URL. Он является частью протокола http и отправляется браузером в виде заголовка http. Имейте в виду, что от реализации браузера / клиента зависит, будет ли он отправлен с запросом и не всегда будет там.

На мой взгляд, лучший вариант - добавить параметры для подкачки прямо в ссылку.

0 голосов
/ 02 февраля 2010

Один из возможных способов - включить QueryStrings, необходимый для каждой ссылки в списке документов.Вы бы передали необходимые строки запросов через ViewData представлению, отображающему список документов.

<% foreach(var doc in Model) { %>
    <%= ActionLink(doc.Title, "AddtoFavorites", new { Page = ViewData["PageNumber"], Query = ViewData["Query" }) %>
<% } %>

Или что-то в этом роде.

Затем в методе действия, где вы выполняете работу по добавлениюдокумент в «избранное»:

public ActionResult AddToFavorites(int documentID, int page, string query)
{
     // Do the work to add the document to favorites
     return RedirectToAction("ActionName", new { Page = page, Query = query}); // where "ActionName" is the name of the action that the user was on before they got here
}

Еще один способ - сохранить информацию о подкачке в TempData, но это особенно усложнит ситуацию, если вы ожидаете, что пользователь нажмет несколько ссылок.

0 голосов
/ 02 февраля 2010

Если javascript является опцией, вызовите javascript: history.back ()

0 голосов
/ 02 февраля 2010

Разве вы не можете просто добавить текущую страницу к параметру действия?

public ActionResult AddFavourite(int? page)
{
   // generate your paged into based on page parameter
   return View(whatever_your_paged_view_is);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...