Возврат к вызывающей странице с общей страницы

голоса
0

У меня есть общая страница в моем приложении ASP.NET MVC, которые могут быть доступны из нескольких страниц в моем приложении. Если я хочу, чтобы пользователь, чтобы вернуться к своей исходной странице после того, как они сделали свой бизнес на общей странице, что это лучший способ, чтобы выяснить, где пользователь был, и скажите приложение, чтобы пойти туда?

Обратите внимание, что я сейчас делаю это для кнопки Отмена на общей странице, говоря OnClick использовать страницы истории:

<input type=button value=Cancel onclick=if (history.length == 0) { window.location='<%=Url.Action(Index, Home) %>' } else {  history.back() } />

но это не будет работать, если Сохранить общие данные обновления страницы отображается на исходной странице.

Задан 06/07/2009 в 17:39
источник пользователем
На других языках...                            


3 ответов

голоса
2

попробуйте использовать:

System.Web.HttpContext.Current.Request.UrlReferrer

http://msdn.microsoft.com/en-us/library/system.web.httprequest.urlreferrer.aspx

Ответил 06/07/2009 в 17:45
источник пользователем

голоса
1

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

Ответил 06/07/2009 в 17:48
источник пользователем

голоса
0

Такие проблемы, как это то, почему я все больше и больше рассматривают возможность использования класса BaseViewModel наследовать все мои просмотра моделей от хранения информации, которая может быть полезно иметь на любой странице. Я пытался придумать полное определение класса в последнее время, но для этих целей, вероятно, будет хорошо иметь follwing свойства (отправил часть этого в ответ на другой вопрос, я найду ссылку в немного):

public class BaseModel
{
    public string PageTitle { get; set; }
    public string PageDescription { get; set; }
    public string PageKeywords { get; set; } //maybe use a List<string> or string[] here
    public string ReturnPage { get; set; }
    //TBD: any other useful HTML page elements 
}

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

public class RandomViewModel : BaseViewModel
{
    RandomViewModel()
    {
        //set page properties
    }
}

Тогда в слое обслуживания (предпочтительно) или в контроллере (возможно, придется делать это там, не пробовал это так не может быть уверен) вы бы иметь доступ к свойству ReturnPage при построении вашей модели (в данном примере I» LL предположим, что вы делаете это в действии):

public ActionResult RandomAction()
{
    RandomViewModel model = _serviceLayer.GetRandomViewModel();
    model.ReturnPage = this.HttpContext.Request.UrlReferrer;
    return View(model);  
}

Тогда в представлении вы могли бы сделать это:

<input type="button" value="Cancel" onclick="if (history.length == 0) { window.location='<%= Model.ReturnPage %>' } else {  history.back() }" />

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

Надеюсь это поможет.

Ответил 06/07/2009 в 18:34
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more