2008-11-24 1 views
0

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

В моем коде это выглядит следующим образом:

Если request.url.host.contains ("а") Тогда Page.Theme = х Else request.url.host.contains ("б") Затем Page.Theme = y

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

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

Thanks

ответ

1

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

0

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

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

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

0

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

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

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

1

Недавно я столкнулся с этой проблемой и написал a quick blog that explains how to get around it.На всякий случай, если кто-то другой сталкивается с этой проблемой, вам просто нужно авторизовать папку Theme в вашем web.config.