【问题标题】:How to set style sheet from server side in asp.net如何在asp.net中从服务器端设置样式表
【发布时间】:2011-02-28 12:58:20
【问题描述】:

我正在使用此链接中的 gridview 样式表

http://www.cyberslingers.com/Sandbox/GridView.aspx

它有各种样式表附加到同一个gridview。当用户选择下拉列表项时,我想将样式表从服务器端附加到页面

【问题讨论】:

    标签: asp.net stylesheet server-side


    【解决方案1】:

    您可以在服务器端生成样式表并将其附加到页面上:

    HtmlGenericControl style = new HtmlGenericControl("style");
    style.Attributes.Add("type", "text/css");
    style.InnerText = "p { color:red; }"; 
    Page.Header.Controls.Add(style);
    

    上面的代码可以在下拉列表的 selectionindexchanged 事件的事件处理程序中,然后你可以生成你想要的所有样式并将它们附加到页面。

    如果您只是想附加对外部 css 文件的引用,那么您可以这样做:

    HtmlGenericControl link = new HtmlGenericControl("link");
    link.Attributes.Add("rel", "stylesheet");
    link.Attributes.Add("type", "text/css");
    link.Attributes.Add("href", "/styles.css");
    Page.Header.Controls.Add(link);
    

    【讨论】:

    • 我必须提供这样的路径 ../CSS/stylesheet1.css 吗?
    • 第二个例子中使用HtmlLink控件不是更好吗?
    【解决方案2】:

    简单的解决方案是只需将 runat="server" id="myname" 放入您的标签中,然后您可以在代码中设置值。

    HTML

    <link id="MyLink" href="~/css/default.css" rel="stylesheet" type="text/css" media="all" runat="server" />
    

    CS

    MyLink.Href = "~/css/Different.css";
    

    【讨论】:

    • 但我没有在服务器端获得任何像 MyLink.Href 这样的属性。我确保我使用的是 runat="server" 属性。
    • 我可以看到 MyLink 的其他属性,例如 innerHTML、值...但不是 href。
    • 您使用的是 .Net 1.1 吗?此属性是在 2.0 版中添加的 msdn.microsoft.com/en-us/library/h119cex2(v=VS.80).aspx
    • 我认为他的问题可能是他正在使用母版页并试图将 标记放在内容页面中的内容占位符控件中到他的主页。在这种情况下,生成的服务器端链接控件是 HtmlGenericControl 而不是 HtmlLink,因此缺少 Href 属性(以及其他属性)。不幸的是,要获得实际的 HtmlLink 控件,您必须将服务器端标记作为页面中 元素的直接子元素,而不是间接包含在占位符控件中。
    • 要进一步解释我之前的评论,请阅读connect.microsoft.com/VisualStudio/feedback/details/273683/…的讨论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 2013-03-09
    相关资源
    最近更新 更多