Неправильно отображается тема ASP.NET - PullRequest
0 голосов
/ 25 ноября 2008

У меня есть небольшое веб-приложение, которое использует темы. Темы работают на хосте, поэтому при preinit, если host = a, загрузить тему x, если host = b, загрузить тему y.

В моем коде это выглядит так:

Если request.url.host.contains ("a"), то Page.Theme = x еще request.url.host.contains ("b") Тогда Page.Theme = y

У меня есть URL-адрес a.abc.com, а другой - b.abc.com (ну, это именно эта структура, но буквы имеют смысл / названия компаний). Проблема в том, что (и я выполнил host == ""), когда я отлаживаю свой сайт на localhost (другой пункт в приведенном выше блоке if, где host = localhost), стиль отрисовывается идеально. Выравнивание элементов идеально, как я ожидаю, с числовыми значениями, которые я указал для ширины, полей и т. Д. В CSS. Но когда я использую инструмент публикации VS2008 (с пометкой «обновляемый») и загружаю его на a.abc.com, который имеет ту же таблицу стилей, что и localhost (копия в своей папке), возникают все виды проблем с выравниванием, как будто я не сделал никакой работы Почему мои стили неправильно отображаются во время выполнения? Если это помогает, я использую VS2008 Pro Edition, IIS6 и Windows Server 2003.

Что расстраивает, так это то, что источник страницы показывает, что тема загружается нормально, как указано в заголовке HTML. Поэтому, когда я публикуюсь, тема для a.abc.com загружается и на нее ссылаются. Помимо всей этой информации, нет никаких явных признаков того, в чем проблема. Я не пытался условно ссылаться на один CSS-файл в разметке ASPX, но если я это сделал, и это сработало, то в любом случае это тоже не объясняет проблему.

Спасибо

Ответы [ 4 ]

1 голос
/ 02 ноября 2011

Я недавно столкнулся с этой проблемой и написал краткий блог, в котором объясняется, как ее обойти . На случай, если у кого-то еще возникнет эта проблема, вам нужно авторизовать папку Theme в вашем файле web.config.

1 голос
/ 25 ноября 2008

Вы устанавливаете тему достаточно рано в своем коде? Тема должна быть применена к странице в самом начале жизненного цикла запроса, в событии PreInit, если вы делаете это в коде позади.

0 голосов
/ 26 ноября 2008

Используете ли вы встроенный веб-сервер? При работе в ASP.Net Development Server стили в App_Themes не будут использоваться ни на одной странице без проверки подлинности (например, Login.aspx или ForgotPassword.aspx). Это связано с тем, что у пользователя еще нет прав доступа к этой папке, или у папки App_Themes отсутствуют права на просмотр. Очевидно, IIS справляется с этим, а Кассини - нет.

Попробуйте добавить это в web.config, чтобы темы и стили работали до аутентификации.

Или, если возможно, переключитесь на запуск приложения на IIS на вашем компьютере.

0 голосов
/ 25 ноября 2008

Да, это на странице preinit.

Я думаю, что это связано с аутентификацией форм. Если я просматриваю (не отлаживаю) страницу входа в систему, она поднимает тему localhost, и все отображается правильно. Элемент управления входом находится в середине страницы, как и должно быть, и т. Д.

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

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