Обнаружение настройки XHtmlConformance во время выполнения (без ссылки на web.configs) - PullRequest
0 голосов
/ 13 июля 2009

Вопрос. Существует ли способ определить, с помощью какого параметра соответствия XHtml создается конкретная веб-страница ASP.Net во время выполнения (без ссылки на web.config).

Справочная информация. У нас есть веб-страницы ASP.NET, которые должны работать в разных режимах соответствия XHtml - в основном Legacy (извините, мама), но некоторые из них используют Transitional для обеспечения правильной работы панелей обновления AJAX и т. Д.

Мы используем теги местоположения в веб-конфигурации для переопределения режима соответствия для отдельных веб-страниц.

<system.web>

    <xhtmlConformance mode="Transitional" />

</system.web>

Но мы столкнулись с проблемой, когда при первом отображении веб-страницы - ни одна из ссылок или кнопок не работала правильно - первое нажатие кнопки всегда игнорировалось, но любые последующие нажатия были в порядке.

Отследили это до выполнения Server.Transfer с устаревшей веб-страницы на веб-страницу перехода - я предполагаю, что переходная страница фактически не отображалась как переход, и поэтому первая обратная передача была в неправильном формате и в Интернете Сервер пошел "не так, как это!" Я предполагаю, что подобные проблемы могут возникать при переносе сервера со страниц перехода обратно на устаревшие страницы.

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

Итак, я выясняю, можем ли мы автоматически и в общем случае форсировать дополнительный постбэк или, возможно, перенаправление на начальном экране, когда мы обнаруживаем, что визуализируемся в неправильном режиме (если предположить, что это проблема). Но мне нужно определить, в каком режиме мы рендеримся - и при запросе конфигурации всегда будет найден тот же ответ, который в этом случае не обязательно будет правильным.

Приветствую, если кто-нибудь может помочь.

1 Ответ

0 голосов
/ 19 августа 2009

Я столкнулся с подобной проблемой в данный момент и доказал, что проблема в том, что XhtmlConformance не сбрасывается на Server.Transfer - это было сделано с использованием некоторого отражения класса Page для получения свойства XhtmlConformance.

Я тоже думал о подобном решении, однако я считаю, что существуют следующие проблемы:

  1. Если вы храните какие-либо данные публикации на нескольких страницах в ViewState, они будут потеряны в Response.Redirect, поэтому вам необходимо сохранить их в сеансе. Это тогда приводит к вопросу "зачем получать данные из поста кросс-страницы"?
  2. Это может привести к ошибкам, когда такое поведение при автоматическом перенаправлении может привести к другим непредвиденным проблемам, которые могут не быть очевидными, и перенаправление маскирует их (например, если бизнес-обработка происходит до вызова перенаправления).

Получает ли какая-либо из ваших функций JS управление через свое имя? Если не свойство ID не изменится, поэтому, если вы все захватываете таким образом, нет никаких причин, по которым вы не можете установить режим соответствия Transitional по всем направлениям. Из некоторых начальных тестов Server.Transfer работает потом.

Если это невозможно, то я думаю, что самый безопасный подход - это работать с каждой страницей в каждом конкретном случае, которая направлена ​​на страницу AJAX и обратно, и преобразовать ее для использования Response.Redirect.

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

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