在运行时将CSS添加到ASP.net母版页。

时间:2014-01-29 11:38:25

标签: c# asp.net css

我有一个ASP.net Web应用程序,想知道是否可以在母版页的运行时更改站点的CSS,并从SQL数据库中获取CSS文件名并将其添加到系统?

4 个答案:

答案 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文件放入不同的主题中。根据数据库条件,您可以更改主题文件的值。

希望这会有所帮助。