ClientScriptManager.RegisterClientScriptInclude方法允许您使用Page对象注册JavaScript引用(检查重复项)。
CSS引用是否有相同的方法?
类似问题适用于ClientScriptManager.RegisterClientScriptBlock和ClientScriptManager.RegisterClientScriptResource
答案 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();