如何为网页动态指定样式表?

CloneCenter 2005-08-01 06:01:39
原来坐的系统升级了,样式表也更换了,但是有一些用户反映这个新的样式看上去不如老的舒服,现在新老样式表文件都已经在系统中了,我试了一种方法,将页面的<link style...>做了数据绑定,这样就实现了根据系统的配置值得到不同的用户样式的处理,但是这样需要修改的液面太多了,有没有哪位高人可以由一个简单的方法?

<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<LINK href="../Style/<%# MyStyle %>" type="text/css" rel="stylesheet">
</HEAD>

...全文
362 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
stoneyu 2005-10-27
  • 打赏
  • 举报
回复
收藏
xuwenzhuo 2005-08-02
  • 打赏
  • 举报
回复
asp.net 2.0 用themes 和skin,可以完美解决此问题!!!!!!!
CloneCenter 2005-08-02
  • 打赏
  • 举报
回复
我已经通过 javascript 使用CSS的动态改变完成了代码,下面贴出来,给大家分享:

页面基类中的代码:

Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

' 使用自定义的样式表。
Dim css1 As String = "<script language=""javascript""> " & ControlChars.CrLf _
& "<!--" & ControlChars.CrLf _
& "if (document.styleSheets.length > 0)" & ControlChars.CrLf _
& " {" & ControlChars.CrLf _
& " document.styleSheets(0).href = '"
Dim css2 As String = "';" & ControlChars.CrLf _
& " }" & ControlChars.CrLf _
& "//-->" & ControlChars.CrLf _
& "</script>" & ControlChars.CrLf
Dim c As HttpCookie = Request.Cookies("style"), style As String
If Not c Is Nothing Then style = Request.ApplicationPath & "/style/" & c.Value
If style <> String.Empty And Me.PurviewID <> String.Empty Then ' 有权限 ID 的页面才时需要更改样式表的页面。
Me.RegisterStartupScript("changemaincss", css1 & style & css2)
End If

Me.PurviewID 是每个页面都有的自定义属性,表示权限ID,和本功能无关。

一点小缺陷:
页面中的CSS样式表的第一个必须是可以被更改的那个,不知道这个能否通过 javascript 来解决。


这个帖子就当是散分了。
julong88 2005-08-02
  • 打赏
  • 举报
回复
学习
CloneCenter 2005-08-02
  • 打赏
  • 举报
回复
谢谢 oupatch(QQ:47668753) milchcow() 两位的支持和参与,现在我的系统代码都已经写完了,客户已经开始试用了,但是他们觉得原来老的样式可能要实用一些,所以希望使用原来老的样式表,但是我不能为了这个将我的源代码全部重写一遍啊,你们所用的方法都是这样的,需要修改每一个源文件,我现在的代码页面都是从一个基类中继承的,我想实现的使用这个基类来完成我的任务,这样我的代码修改量是最小的了。
jimu8130 2005-08-02
  • 打赏
  • 举报
回复
学习
milchcow 2005-08-02
  • 打赏
  • 举报
回复
这样:
在ASPX页面中:
<HEAD>
<title>TITLE</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<asp:Literal id="litCss" runat="server"></asp:Literal>
</HEAD>

后台程序:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
litCss.Text = "<LINK href='../system/css/Admin_STYLE.CSS' rel='stylesheet'>"
End Sub

即可
oupatch 2005-08-02
  • 打赏
  • 举报
回复
通过使页面动态加载不同CSS实现多界面
<%@page language="C#"%>
<%@import namespace="System.Data"%>
<script language="c#" runat="server">
public void page_load(Object obj,EventArgs e)
{
//创建服务器端控件.
//指定的标记"LINK"初始化此类的新实例.
HtmlGenericControl objLink=new HtmlGenericControl("LINK");
objLink.ID=ID;
objLink.Attributes["rel"]="stylesheet";
objLink.Attributes["type"]="text/css";
objLink.Attributes["href"]="portal.css";

//此控件不产生任何可见输出,仅作为其他控件的容器,可在其中添加,插入或移除控件.
MyCSS.Controls.Add(objLink);
}
</script>
<html>
<head>
<title>c#</title>
<asp:placeholder id="MyCSS" runat="server"></asp:placeholder>
</head>
<body bgColor="#ffcc66" style="FONT:9pt">
<form runat="server">

</form>
</body>
</html>


http://www.cnblogs.com/oupatch/archive/2005/03/16/118960.html
稍微有点无敌 2005-08-02
  • 打赏
  • 举报
回复
学习!!!
chxuxu 2005-08-02
  • 打赏
  • 举报
回复
学习~~~~~~~~~~~~~~~~`
cuike519 2005-08-02
  • 打赏
  • 举报
回复
如果你有页面基类,可以直接在基类里面重写页面的head部分。
roseguns 2005-08-02
  • 打赏
  • 举报
回复
我个人比较喜欢syfsz(黄金分割点) 的方案。
justin_chang 2005-08-01
  • 打赏
  • 举报
回复
最好将每个客户所选择的CSS样式名称放入一个资料表中,这样客户每次登录成功后就可以使用自己喜欢的CSS样式了
codeangel 2005-08-01
  • 打赏
  • 举报
回复
in HTML
<head>
<LINK href="../../Styles/BasicLayout.css" type="text/css" rel="stylesheet">
</head>
skyfarwolf 2005-08-01
  • 打赏
  • 举报
回复
up!
学习!
minghui000 2005-08-01
  • 打赏
  • 举报
回复
up
zhilunchen 2005-08-01
  • 打赏
  • 举报
回复
syfsz 2005-08-01
  • 打赏
  • 举报
回复
呵呵,我们是这样处理的:写好几个CSS文件,并且把文件名保存到数据库中,写了个页面继承之 System.Web.UI.Page ,其他的页面都从这个页面来的。在这个页面里,根据不同的用户打印不同的CSS文件到页面上去。
studydotnet 2005-08-01
  • 打赏
  • 举报
回复
高手群集,小弟有幸遇上,呵呵

看热闹
wyfwyf2000 2005-08-01
  • 打赏
  • 举报
回复
document.styleSheets(0).href = "../Style/old.css";
这样是简单,都是高人
加载更多回复(8)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧