Хранение ViewState в SessionPageStatePersister

Что ж, это распространенная проблема, когда вы добавляете строку в другую локаль, отличную от файла strings.xml по умолчанию, и забываете добавить ее в файл strings.xml по умолчанию. Поэтому, когда вы находитесь в локали по умолчанию, приложение не сможет увидеть значение, потому что оно не внутри значения по умолчанию strings.xml

10
задан Nick Berardi 29 January 2009 в 17:43
поделиться

4 ответа

Обратите внимание, что даже после перемещения состояния страницы в состояние отображения Вы будете все еще видеть __ элемент Состояния отображения на Ваших страницах.

Кроме того, я полагаю, что это решение может быть более корректным, чем другие предлагаемые, поскольку оно обрабатывает кнопку "Назад" немного более изящно. При хранении ViewState в скрытой переменной это становится частью HTML и поэтому доступно, если пользователь нажимает кнопку "Назад" 2 или 3 страницы и продолжает то, что он делал. Вслепую повреждение Состояния отображения с каждым запросом страницы будет препятствовать тому, чтобы кнопка "Назад" вела себя способ, которым ожидает пользователь.

Однако это было бы небрежно, чтобы отметить, что это - вероятно, не прекрасная идея во-первых. Я предложил бы делать по крайней мере две вещи сначала:

Во-первых, удостоверьтесь, что Вы выключили Состояние отображения на всех средствах управления, для которых не нужно оно (который, вероятно, будет большинством из них). Можно сделать это установкой 'IsViewstateEnabled' ко лжи.

Во-вторых, включите http сжатие на своем веб-сервере. Даже если у Вас есть довольно размерное состояние отображения, общий вес страницы (при сжатии - не, как просматривается в браузере) должно быть относительно маленьким.

Надежда, которая помогает!

9
ответ дан 3 December 2019 в 20:07
поделиться

Что Вы могли бы видеть в ViewState, скрытым полем является ControlState, который хранится по-другому по сравнению с "нормальным" ViewState.

Чтобы также сохранить ControlState на сессии добавьте следующую запись в web.config файл:

  <system.web>
    <browserCaps>
      <case>
        RequiresControlStateInSession=true
      </case>
    </browserCaps>
  </system.web>

Проверьте эту страницу на больше.

4
ответ дан 3 December 2019 в 20:07
поделиться

Мой ответ, вероятно, не, что Вы хотите, но как последнее прибежище Вам, возможно, придется сделать что-то вроде этого.

Я применил отражательную блокировку, описанную в https://connect.microsoft.com/VisualStudio/feedback/Workaround.aspx? FeedbackID=240686 и созданный мой собственный незавершенный менеджер сеансов и хранил все данные сессии там.

После нахождения разработчика WYSIWYG генерировал плохой HTML, который я переключил на ручную запись всего моего HTML с Ответом. Записать.

Престо больше никаких проблем. Большая работа, но это стоило того.

Править: никакая ярмарка downvoting ниже 0, потому что Вам не нравится идея игнорировать все веб-формы. Когда инструменты не работают на меня, я не использую их. Если инструменты не работают на Вас, и Вы не можете получить их работа, Вы не должны использовать их также.

3
ответ дан 3 December 2019 в 20:07
поделиться

Важная часть кода

protected override PageStatePersister PageStatePersister
{
    get
    {
        return new SessionPageStatePersister(this);
    }
}

Это переопределяет нормальный стойкий организм состояния страницы и обеспечивает тот, который сохраняет данные страницы к Сессии вместо ViewState.

3
ответ дан 3 December 2019 в 20:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: