2010-01-10 90 views
0

我正在將SharePoint Server 2007 Enterprise與Windows Server 2008 Enterprise配合使用。我正在使用發佈門戶模板。我正在開發使用VSTS 2008 + C#+ .Net 3.5 + ASP.Net。我想開發一個WebPart,它引用了css和javascript(.js)文件。我的問題是(1)如何部署css/javascript文件和(2)如何從webpart引用相關的css/javascript文件來編寫參考路徑(例如下面的代碼中的../../themes)?如何在WebPart中使用javascript和css?

順便說一句:css/javascript/Webpart的現有代碼來自現有的aspx代碼,我正在將aspx代碼遷移到Webpart。該代碼在aspx中工作。

目前我的代碼看起來像這樣,

<link type="text/css" href="../../themes/test.css" rel="stylesheet" /> 
<script type="text/javascript" src="../../test.js"></script> 

回答

1

對於JavaScript,有ClientScriptManager.RegisterClientScriptInclude

沒有對CSS等效的方法,但你可以:

  1. 提供類名列表,並提示一個css文件,但不包括一個你自己

  2. 使用embedded resources

  3. 控件添加到標題:

(像我一樣在這裏):

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

最佳實踐說,你不應該包含CSS正如我上面做了(或嵌入資源中)。你應該使用上面的方法1。

+0

爲什麼我需要使用客戶端腳本管理器註冊它才能在WebPart中使用它?爲什麼我不能只從一些相對路徑引用css/javascript文件,就像我們在html/aspx代碼中所做的一樣? – George2 2010-01-11 15:18:48

+1

從技術上講,你可以。它會工作(路徑必須相對於頁面)。但是如果在多個頁面中使用Web部件並且路徑不同? – 2010-01-11 16:55:56

2

您可以使用我的HtmlHelper類。

class HtmlHelper 
{ 
    public static void IncludeScript(Page page, String key, String location) 
    { 
     if (!page.ClientScript.IsClientScriptIncludeRegistered(key)) 
      page.ClientScript.RegisterClientScriptInclude(key, location); 
    } 

    public static void IncludeCSS(Page page, String src) 
    { 
     HtmlLink css = new HtmlLink(); 
     css.Href = src; 
     css.Attributes["rel"] = "stylesheet"; 
     css.Attributes["type"] = "text/css"; 
     css.Attributes["media"] = "all"; 

     page.Header.Controls.Add(css); 
    } 
} 
相關問題