Ни IE, ни Firefox не учитывают выводимые контрольные значения - PullRequest
1 голос
/ 07 апреля 2010

Я пишу опрос дизайнера asp.net mvc.Он имеет кнопки для перемещения вопросов вверх и вниз.Кнопки отправляют всю форму назад, а затронутые вопросы обмениваются на сервере.Когда форма возвращает единственное, что изменяется, это значения для каждого вопроса опроса.И Firefox, и IE, похоже, игнорируют это изменение.

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

Я попытался autocomplete = "off" в моей форме.мой global.asax

[System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] перед моим контроллером

и следующее в заголовке моей страницы

<meta http-equiv=="CACHE-CONTROL" content="NO-CACHE" />
<meta http-equiv=="PRAGMA" content="NO-CACHE" />
<META HTTP-EQUIV="EXPIRES" CONTENT="0" /> 

Я также попытался поместить случайное значение запроса в свой URL.

НИЧЕГО !!!Это должно быть очень распространенным явлением.

Кто-нибудь понял?

1 Ответ

0 голосов
/ 08 апреля 2010

Перенаправление в GET, по-видимому, исправляет его с помощью TEMPDATA для передачи модели, опубликованной с клиента, в представление [HttpGet].

Я не знаю, почему браузеры предпочитают, чтобы их кэшированные значения поля ввода превышали то, что возвращается из POST, но дают честное представление о том, что получается из GET.

Я просто надеюсь, что мои пользователи никогда не получат обновления в опросе, над которым они работают, поскольку они потеряют его, когда TEMPDATA сдулся. Хотя на самом деле это может быть тем, чего они ожидают, и мне обычно нравится «POST затем перенаправить на GET», поскольку это предотвращает потенциально опасное повторное размещение.

...