2008-09-10 21 views

回答

7

簡答:沒有。你肯定可以推出你自己的函數(正如CMPalmer所建議的那樣),將CSS嵌入式資源(如Gulzar所建議的)嵌入到頁面中。

儘管如此,我不確定爲什麼要這麼做。如果您正在製作一個具有很多CSS樣式的可重用控件,我的建議是將類名硬編碼到控件的符合標準的輸出中,然後發送帶有建議樣式表的控件。這使您的用戶/客戶可以選擇重寫您的建議樣式以適應他們的需求,並且通常允許他們按照他們認爲合適的方式管理他們的CSS設置。

從標記中分離樣式是一件好事 - 您已經在避免各種內置的ASP.NET樣式屬性方面走上了正確的道路,但是您應該一路走下去,讓CSS保持您的狀態.dll文件。

2

我已經使用CSS文件爲Embedded resources

+0

是的,但在這種情況下,是否有一個乾淨的替代ClientScriptManager.RegisterClientScriptResource的CSS使用? – 2008-09-11 03:05:10

7

您可以添加標題鏈接到CSS文件在ASP.Net代碼隱藏類是這樣的:

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)。

+0

請參閱此答案中的HeadContainsLinkHref方法:http://stackoverflow.com/questions/1510766/build-events-and-versioning-js-and-css-files。 「看看它是否已經在那裏」 – russau 2012-05-03 05:31:00

0

還有一個想法:您可能需要考慮「命名」您的類名,以避免與您的客戶可能已經使用的常見類名衝突。例如。

<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 
{ 
    ... 
} 
0

我do is use an

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

,然後在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(); 
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 

希望這可以幫助別人。