我想根据用户的Membership角色有条件地链接CSS文件。管理员应链接我的admin.css文件,而其他人(其他角色和匿名用户)应显示我的global.css文件。可以这样做吗?
答案 0 :(得分:6)
尝试this:
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);
}
答案 1 :(得分:0)
您可以根据角色创建主题 - AdminTheme(将包含admin.css)&amp; GlobalTheme(将包含global.css),否则您可以在给予runat =“Server”属性后在<link>
标记中动态编写<head>
元素。
然后,您可以根据角色在PreInit或Init事件中动态设置页面的主题。
答案 2 :(得分:0)
当然,当您输出<head>
部分时,请使用if语句检查具有“用户级别”的会话变量,然后输出相应的<link>
标记(或{{1}行,取决于你喜欢做CSS的方式。)
答案 3 :(得分:0)
如果将页面的head元素设置为在服务器端运行,则可以在标题中注入一个新的HtmlGenericControl,如果用户处于特定角色,则表示链接。
答案 4 :(得分:0)
如果您希望根据角色启用/禁用/显示/隐藏控件,这只不过是“默默无闻”,因为关闭样式或将浏览器设置为特定的css文件以覆盖实际提供的内容轻松显示所有秘密。
另一个问题是缓存。像Opera / Firefox这样的浏览器可以快速缓存所有可缓存的浏览器,因此用户必须单击“重新加载页面”。您可以禁用缓存,但之后会再次下载您的css,从而不必要地消耗流量。