ASP.NET - условно-ссылочный CSS-файл - PullRequest
3 голосов
/ 15 апреля 2009

Я хочу условно связать базу файлов CSS с ролью пользователя. Администратор должен связать мой файл admin.css, а все остальные (другие роли и анонимные пользователи) должны отобразить мой файл global.css Можно ли это сделать?

Ответы [ 5 ]

6 голосов
/ 15 апреля 2009

Попробуйте это :

protected void Page_Init(object sender, EventArgs e)
{
    HtmlLink css = new HtmlLink();
    // add conditional logic to add correct css file        
    css.Href = "css/fancyforms.css"; 
    css.Attributes["rel"] = "stylesheet";
    css.Attributes["type"] = "text/css";
    css.Attributes["media"] = "all";
    Page.Header.Controls.Add(css);
}
0 голосов
/ 15 апреля 2009

Если вы хотите включить / отключить / показать / скрыть элементы управления в зависимости от роли, это будет не что иное, как «безопасность по незаметности», поскольку отключение стилей или настройка браузера на определенный файл CSS для переопределения того, что на самом деле обслуживается, будет легко отобразить все, что является секретом.

Еще одна проблема - кэширование. Некоторые браузеры, такие как Opera / Firefox, успешно кэшируют все, что кешируется, поэтому пользователю придется нажать «Обновить страницу». Вы, вероятно, можете отключить кеширование, но тогда ваш CSS будет загружен заново, что приведет к излишнему потреблению трафика.

0 голосов
/ 15 апреля 2009

Если вы установите элемент head вашей страницы для запуска на стороне сервера, вы можете добавить новый HtmlGenericControl в заголовок, который представляет ссылку, если пользователь играет определенную роль.

0 голосов
/ 15 апреля 2009

Конечно, когда вы выводите раздел <head>, попросите оператор if проверить переменную сеанса, которая имеет их «уровень пользователя», а затем вывести соответствующий тег <link> (или строку @import, в зависимости от того, как вы предпочитаю делать свой CSS).

0 голосов
/ 15 апреля 2009

Либо вы можете создать тему на основе роли - AdminTheme (будет содержать admin.css) и GlobalTheme (будет содержать global.css), либо вы можете динамически записать элемент <link> в тег <head> после предоставления атрибут runat = "Server" для него.

Затем можно динамически установить тему страницы в событии PreInit или Init в зависимости от роли.

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