none
Обновление страницы в истории MVC3 RRS feed

  • Вопрос

  • Есть страница редактирования, содержимое которой зависит от состояния объекта.

    Если поле "координаты" пусто, на ней одна кнопка "Добавить".

    Если поле не пусто - кнопки "Редактировать", "Очистить"

    Если после, например, действия "Очистить" перейти на страницу назад кнопкой "Назад" браузера, там так и останется "Редактировать", "Очистить", хотя координат уже нет. Можно ли это как-то исправить?


    24 июня 2012 г. 15:57

Ответы

  • Вообще протокол Http не умеет хранить состояние. Использование кнопки назад, это - тоже самое, что и сделать новый запрос. В этом случае возвращается либо полностью новая страница, либо частично закешированная. Механизм хранения состояния, в ASP.NET MVC в отличии от ASP.NET WebForms нужно делать самому, например используя объект Session.
    • Предложено в качестве ответа YatajgaEditor 27 июня 2012 г. 6:45
    • Помечено в качестве ответа Валерий Осипов 27 июня 2012 г. 10:25
    25 июня 2012 г. 5:54
    Модератор

Все ответы

  • напиши как ты проверяеш поле, и где именно
    24 июня 2012 г. 16:37
  • В View

    @if (Model.HaveCoordinates)
    		{
    			<button class="button" onclick="javascript:selectAction('Edit');return false;" style="font-size: 2em;height: 4em;"><span class="button-content">Редактировать координаты</span></button>
    			<button class="button" onclick="javascript:selectAction('DeleteAll');return false;" style="font-size: 2em;height: 4em;"><span class="button-content">Удалить все координаты</span></button>
    		}
    		else
    		{
    			<button class="button" onclick="javascript:selectAction('AddNew');return false;" style="font-size: 2em;height: 4em;"><span class="button-content">Добавить новые координаты</span></button>
    		}

    24 июня 2012 г. 17:58
  • Вообще протокол Http не умеет хранить состояние. Использование кнопки назад, это - тоже самое, что и сделать новый запрос. В этом случае возвращается либо полностью новая страница, либо частично закешированная. Механизм хранения состояния, в ASP.NET MVC в отличии от ASP.NET WebForms нужно делать самому, например используя объект Session.
    • Предложено в качестве ответа YatajgaEditor 27 июня 2012 г. 6:45
    • Помечено в качестве ответа Валерий Осипов 27 июня 2012 г. 10:25
    25 июня 2012 г. 5:54
    Модератор
  • Кстати да, насчот управления состоянием тоже хотел предложить, ибо сам использую.

    Вот ссылки, которые будут полезны

    http://msdn.microsoft.com/ru-ru/library/75x4ha6s.aspx

    http://blogs.msdn.com/b/ruwebapps/archive/2011/09/10/asp-net-webforms-4-0-viewstate.aspx

    http://www.realcoding.net/articles/upravlenie-sostoyaniem-v-veb-formakh.html

    http://www.gotdotnet.ru/blogs/abasyuk/6536/

    Кстати вот цитата специально для   Yatajga

    из http://msdn.microsoft.com/ru-ru/library/dd381412.aspx

    • Поддержка существующих функций ASP.NET. ASP.NET MVC позволяет использовать такие функции, как проверка подлинности с помощью форм и Windows, проверка подлинности по URL-адресу, членство и роли, кэширование вывода и данных, управление состоянием сеанса и профиля, наблюдение за работоспособностью, система конфигурации и архитектура поставщика.


    • Предложено в качестве ответа Letos07 25 июня 2012 г. 7:07
    • Изменено Letos07 25 июня 2012 г. 7:12
    25 июня 2012 г. 7:07
  • Уважаемый пользователь Letos07. Спасибо за ссылки, они могут пригодится в дальнейшем, тем кто использует веб-формы. Но речь тут не о WebForms,а - MVC. Тут нет такого понятия как состояние, шаблон MVC работает по принципам и стандартам REST, где такое понятие напрочь отсутствует.

    "Поддержка существующих функций ASP.NET. ASP.NET MVC позволяет использовать такие функции, как проверка подлинности с помощью форм и Windows, проверка подлинности по URL-адресу, членство и роли, кэширование вывода и данных, управление состоянием сеанса и профиля, наблюдение за работоспособностью, система конфигурации и архитектура поставщика." - всё это не имеет никакого отношения к состаянию представления, которое подразумевается в данном контексте, и меняется при каждом запросе. Естественно, платформа ASP.NET одна, а WebForms и MVC просто разные подходы построения приложений, и следовательно у них много общего.

    26 июня 2012 г. 18:13
    Модератор
  • Пожалуйста, не бросайте топик без ответа. Спасибо.


    Для связи [mail]

    27 июня 2012 г. 8:00
    Модератор