MVC3 динамический возврат URL - PullRequest
0 голосов
/ 27 октября 2011

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

Допустим, у меня есть View и относительное действие с именем InfoPage, и на этой странице я хочу ссылку, которая просто говорит «Возврат».

Если пользователь находится на странице PageA и переходит на InfoPage, щелкнув ссылку «Возврат», пользователь возвращается на страницу A.

Если пользователь находится на странице B и переходит на InfoPage, щелкнув ссылку «Возврат», пользователь возвращается на страницу B.

Я думаю, что самым простым способом сделать это будет добавление ReturnUrl в качестве свойства модели, используемой в InfoPage.

Мой вопрос: как мне получить этот обратный URL?

    public ViewResult InfoPage(){
       var model = new InfoPageModel(); 
       //Set my model's other properties here...
       model.ReturnUrl = ''//Where do I get this?
       return view(model);
    }

А потом, на мой взгляд,

    <a href="@Model.ReturnUrl">Return</a>

Ответы [ 2 ]

1 голос
/ 25 апреля 2017

Чтобы динамически создать returnUrl в любом действии контроллера:

var formCollection =
    new FormCollection
        {
            new FormCollection(this.HttpContext.Request.Form),
            new FormCollection(this.HttpContext.Request.QueryString)
        };

var parameters = new RouteValueDictionary();

formCollection.AllKeys
    .Select(k => new KeyValuePair<string, string>(k, formCollection[k])).ToList()
    .ForEach(p => parameters.Add(p.Key, p.Value));

var returnUrl =
    this.Url.Action(
        this.RouteData.Values["action"].ToString(),
        this.RouteData.Values["controller"].ToString(),
        parameters
    );

Похожие: Как перенаправить на предыдущее действие в ASP.NET MVC? (То же, но из любого представления)

1 голос
/ 27 октября 2011

Самый надежный способ сделать это - передать параметр строки запроса на вашу страницу со страницы вызывающего абонента. Каждая ссылка на эту страницу должна будет указывать свой собственный URL. (Request.Url).

Вы также можете использовать Request.UrlReferrer в своем управлении, но не все браузеры отправляют Referer заголовки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...