我有一个ASP.net Web应用程序,想知道是否可以在母版页的运行时更改站点的CSS,并从SQL数据库中获取CSS文件名并将其添加到系统?
答案 0 :(得分:2)
你可以把它放在aspnet文字的母版页的顶部,并在母版页的页面加载中构建链接,你可以把css放在那里
<asp:Literal ID="Css" runat="Server" />
然后在页面加载
var cssfilename = GetCssFromDatabase();
Literal.Text = "<link rel=\"stylesheet\" media=\"all\" " + cssfilename + "\" />";
答案 1 :(得分:1)
是的。使用<head runat="server">
,您可以在其中放置任何内容,最简单的方法可能是Literal
控件,您可以从代码隐藏中附加字符串
Masterpage.master:
<head runat="server">
<title>Your Site</title>
<asp:Literal runat="server" ID="cssLiteral" />
</head>
Masterpage.master.cs:
cssLiteral.Text = "<link rel='stylesheet' type='text/css' href='"+strCssFileName+"' />";
答案 2 :(得分:0)
您没有提供有关您案件的更多信息,是的,它可能在很多方面。以下是如何从内容页面更改母版页中的css文件的简单示例:
首先在Global.asax中添加一个静态变量(VB.Net中的代码)
Public Shared DefaultCssFile As String = "~/MyStyles.css"
在母版页标题中:
<asp:PlaceHolder runat="server">
<link rel="Stylesheet" type="text/css" href="<%= Page.ResolveUrl(MyApp.Global_asax.DefaultCssFile) %>" />
</asp:PlaceHolder>
然后根据需要更改变量值。
MyApp.Global_asax.DefaultCssFile = "~/MyOtherStyles.css"
答案 3 :(得分:0)
有几种方法可以实现这一目标。
我建议您使用主题和皮肤文件概念。
protected void Page_PreInit(object sender, EventArgs e)
{
switch (Request.QueryString["theme"])
{
case "Blue":
Page.Theme = "BlueTheme";
break;
case "Pink":
Page.Theme = "PinkTheme";
break;
}
}
在这里,您可以准确地从代码后面更改主题运行时的值。您可以将.css文件放入不同的主题中。根据数据库条件,您可以更改主题文件的值。
希望这会有所帮助。