2009-02-01 14 views
17

İçinde bulunan komut dosyası başvuruları, özellikle jQuery, görünümden sonra görüntüleniyor. Bunu < başlığında> almak için bir yol var mı?Sayfa.ClientScript.RegisterClientScriptInclude, başlığa dahil nasıl?

Page.ClientScript.RegisterClientScriptInclude("jQuery", "/scripts/jquery.js"); 

jquery.js'yi bir kullanıcı denetiminin sayfa yüküne kaydettirmeye çalışıyorum.

Şimdiden teşekkürler!

P.S. Eğer (ClientScript ile) yapılamazsa, herkes neden bunu oluşturmadıklarına dair bir fikriniz var mı?

GÜNCELLEME

ihtiyacım clientscript yöneticisinin ana özelliği kez bir komut dosyası içerir ancak yeteneğidir. Kontrol bir sayfada defalarca görünebilir, ama sadece bir jQuery komut bir süre önce bu problem vardı ve ben RegisterClientScriptInclude kullanmayan bitti

cevap

22

doğrudan inlcude için

HtmlGenericControl Include = new HtmlGenericControl("script"); 
Include.Attributes.Add("type", "text/javascript"); 
Include.Attributes.Add("src", sInclude); 
this.Page.Header.Controls.Add(Include); 
: HEAD

Eklemeden önce var olduğundan emin olmak için kontrol etmek istersiniz.

+0

Kullandığım PlaceHolder'ı atlayarak bir başka mükemmel yöntem. –

+0

Teşekkür ederim Glennular, benzersizliği kontrol etmek, ClientScript – ccook

+0

'un yararlı biti gibi görünüyor. Bu mükemmel bir cevap. – siddhusingh

8

içermektedir istiyorum.

Ben sayfanın başlığında bir yer tutucu yerleştirilir ve bir HtmlGenericControl aracılığıyla yer tutucu için script etiketini ekledi. Kodumu bulabilir ve onunla cevabım düzenlemek edeceğiz eğer

Ben göreceksiniz.

DÜZENLEME benim kodunu bulamadık

, bu yüzden sadece bunu yeniden oluşturulur:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <asp:PlaceHolder runat="server" ID="HeadPlaceHolder"></asp:PlaceHolder> 
</head>  
<body> 
    ... 
</body> 
</html> 

Ve Arkasında Kodu:

protected void Page_Load(object sender, EventArgs e) 
{ 
    HeadPlaceHolder.Controls.Add(/* Your control here */); 
} 
+0

Teşekkür ederiz! Evet, okurken okuduğum her şey kafanın içine girmeyeceğini gösteriyor. – ccook

+0

Bu mükemmeldi - yer tutucu, komut dosyalarını tam olarak nerede, tam olarak düzgünlük için olmak üzere, tam olarak istediğiniz yerde bulmak için kullanışlıdır. Ayrıca stil sayfaları için ayrı bir tane kullandım. Page.Header.Controls.Add yaklaşımı sadece sonuna kadar ekler, bu yüzden her şey birbirine karışmaya eğilimlidir. PlaceHolder ile, betikler gruplanır; stil sayfaları gruplandırılmış. – goodeye

1

Bu sayfanın başlığına komut eklemek için Page.ClientScript kullanmak olası görünmemektedir.

3

Hey, eski soru, ama belki bu birilerinin ilgisini çekebilir. Ben .net 3.5sp1 ile kendi UserControl oluşturma

, aynı sorunlarla karşılaştı. Çözüm benim için çalışıyor.

Bu kod UserControl sınıftan: Ben yuvalama sayfanın Page_Load çağrılmadan önce yapılmalıdır biraz daha başlatma yapmak gerekir çünkü

protected void Page_Init(object sender, EventArgs e) 
{ 
    const string scriptKey = "UserControlScript"; 

    if(!Page.ClientScript.IsClientScriptIncludeRegistered(Page.GetType(), scriptKey)) 
    { 
     Page.ClientScript.RegisterClientScriptInclude(Page.GetType(), scriptKey, ResolveClientUrl("~/js/UserControl.js")); 
    } 
} 

ben Page_Init kullandı.

İlgili konular