Ввод текста, показывающий неправильное значение после использования кнопки назад браузера - PullRequest
1 голос
/ 17 ноября 2011

У меня есть сайт asp.net mvc3, который показывает странное поведение при нажатии кнопки «Назад».У меня есть форма с вводом текста, в моей модели установлено значение, например:

@using (Html.BeginForm("Search", "Home", FormMethod.Get, new { name = "searchForm" }))
{
    <div>
        <input id="term" type="text" name="Term" value='@Model.Term' />
        <input type="submit" value="Search" />
    </div>
}

Все отлично работает, кроме использования кнопки «Назад» в браузере.Если я введу «ABC», затем отправлю свою форму, введите «XYZ» и снова отправлю, а затем вернусь. Я все еще вижу «XYZ» в текстовом поле, но когда я проверяю html с помощью инструментов разработчика браузера, он показывает правильное значение«ABC» (правильное значение также в строке запроса).

У меня также есть другое место на странице, где я отображаю то же значение @ Model.Term, но в этом месте оно отображается правильно как "ABC".

Есть идеи?Я чувствую, что это должно быть что-то глупое, что я делаю, но я не могу понять это:)

1 Ответ

0 голосов
/ 17 ноября 2011

Браузер, скорее всего, показывает, что он в последний раз видел в качестве ввода в форму, в отличие от того, что содержит HTML.Он не знает взаимосвязи между двумя местами, где отображается текст, он просто знает, что пользователь ввел «Боб» в одну из них (поэтому он показывает это).

Один из вариантов - сохранитьcookie (на стороне сервера), когда отправка формы завершена.Затем используйте технику, показанную здесь , чтобы вызвать некоторый JavaScript при нажатии на кнопку «назад».В этом javascript определите, есть ли файл cookie и принудительно ли он обновляет всю страницу (эквивалент нажатия F5).

Примечание. Я не говорю, что это хорошая идея (я думаю, что это ужасная идея), но он может делать то, что вы ожидаете (в отличие от того, что ожидает ваш пользователь - что и происходит сейчас).

Другой (гораздо лучший) вариант - убедиться, что каждый POSTвыполняет перенаправление сразу после GET .Таким образом, когда вы нажимаете кнопку «Назад», вы возвращаетесь к результатам GET (которые, скорее всего, будут соответствовать вашим ожиданиям).


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