是否有CSS的ClientScriptManager.RegisterClientScriptInclude等效项

时间:2008-09-10 16:50:58

标签: asp.net css

ClientScriptManager.RegisterClientScriptInclude方法允许您使用Page对象注册JavaScript引用(检查重复项)。

CSS引用是否有相同的方法?

类似问题适用于ClientScriptManager.RegisterClientScriptBlockClientScriptManager.RegisterClientScriptResource

6 个答案:

答案 0 :(得分:7)

您可以在ASP.Net代码隐藏类中添加CSS文件的标题链接,如下所示:

HtmlLink link = new HtmlLink();
link.Href = "Cases/EditStyles.css";
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
this.Header.Controls.Add(link);

您可以预先迭代标题控件以查看它是否已存在。显示的示例来自我的一个项目中的Page_Load,并且位于条件表达式中,如果页面应处于“编辑”模式,则只添加EditStyles.css。

对于ClientScriptManager.RegisterClientScriptBlock和ClientScriptManager.RegisterClientScriptResource,它们具有相同的功能,用于检查它们是否已经注册(例如,IsClientScriptrResourceRegistered)。

答案 1 :(得分:7)

简答:不。您当然可以使用自己的功能(如CMPalmer建议的那样)来获取CSS嵌入式资源(正如Gulzar建议的那样)并将它们嵌入到页面中。

尽管如此,作为一个最佳实践问题,我不确定你为什么要这样做。如果你正在制作一个具有大量CSS样式的可重用控件,我的建议是将类名硬编码到控件的符合标准的输出中,并附带一个建议的样式表。这使您的用户/客户可以选择覆盖您建议的样式以满足他们的需求,并且通常允许他们在他们认为合适的情况下管理他们的CSS设置。

将样式与标记分开是一件好事 - 你已经走在正确的道路上避免各种内置的ASP.NET样式属性,但是你应该把它全部拿走并保持CSS不受你的影响。 DLL。

答案 2 :(得分:2)

我已将css文件用作Embedded resources

答案 3 :(得分:2)

只需检查已注册脚本是否存在,如果您发现它不存在,那么您将知道这是您第一次创建控件。此时,您可以将文字控件放入指向所需css文件的页面中。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    With Page.ClientScript
        If Not .IsClientScriptIncludeRegistered("JQuery") Then 
            .RegisterClientScriptInclude("JQuery", "Scripts/jquery-1.4.2.min.js")
            Dim l As New Literal()
            l.Text = "<link href='Uploadify/uploadify.css' rel='stylesheet' type='text/css' />"
            sender.controls.add(l)
        End If
    End With
End Sub

希望这有助于某人。

答案 4 :(得分:0)

还有一个想法:您可能需要考虑“命名空间”您的类名,以避免与您的消费者可能已经使用的常见类名冲突。 E.g。

<div class="SmillerControls_Toolbar">
    <a class="SmillerControls_Button" ...>...</a>
    ...
</div>

或者您可以将整个事物包装在一个“命名空间”类中,然后将CSS写入:

 <div class="SmillerControls">
     <div class="Toolbar">
          <a class="Button" ...>...</a>
     </div>
 </div>

你的CSS就像

 div.SmillerControls div.Toolbar
 {
     ...
 }

 div.SmillerControls div.Toolbar a.Button
 {
     ...
 }

答案 5 :(得分:0)

我所做的是使用

<asp:Literal id="cssliteral" runat="server" /> 

在head中,然后在PageLoad上包含动态css脚本的StringBuilder。

StingBuilder str = new StringBuilder();
str.Append("<style type="text/css">");
str.Append(".myclass {background-color:#" + mycolor);
str.Append("</style>");

cssLiteral.Text = str.ToString();