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

问题描述 投票:0回答:5

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

c# asp.net css
5个回答
2
投票

您可以将 ASPNET 文字放在母版页的顶部,并在母版页的页面加载中构建链接,这样您就可以在那里放置 CSS

<asp:Literal ID="Css" runat="Server" />

然后在页面加载

var cssfilename  = GetCssFromDatabase();
Literal.Text = "<link rel=\"stylesheet\" media=\"all\" " + cssfilename  + "\" />";

1
投票

是的。使用

<head runat="server">
,您可以在其中放置任何内容,最简单的方法可能是
Literal
控制从代码隐藏中附加字符串的位置

母版页.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+"' />";

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"

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

希望这会有所帮助。


0
投票

动态创建新元素

const styleElement = document.createElement("style");

// Adding custom CSS rules
styleElement.textContent = `
  /* Your CSS rules here */
.test { color:red;}
`;

// Appending the <style> element to the <head> section of the HTML document
document.head.appendChild(styleElement);
© www.soinside.com 2019 - 2024. All rights reserved.