2012-05-28 7 views
11

Ich habe eine ASP.net UserControl, die die enthaltene Seite benötigt, um einen Verweis auf jquery aufzunehmen.Wie kann man jQuery in die ASP.net-Seite einbinden?

In den alten Tagen, ich habe einfach einen Verweis auf jQuery in der enthaltenden Seite enthalten:

<HEAD> 
    <SCRIPT type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></SCRIPT> 
</HEAD> 

Aber meine Usercontrol der Abhängigkeit von jQuery ist eineine internen Implementierungsdetails, die nicht nach außen undicht sein sollten . Wie kann mein Benutzersteuerelement diktieren, dass jQuery auf der letzten Seite enthalten sein soll?


Nachforschen, finde ich viele verwirrte Lösungen, verschiedene Funktionen zu verschiedenen Zeiten anrufend. Ich zögere zu erwähnen alle von ihnen, weil die Leute denken könnten, dass alle von ihnen gültig sind. Ich hoffe auf die richtige Antwort, keine Antwort, die funktioniert.

Verschiedene Lösungen beinhalten Aufruf:

ist Meine Verwirrung zentriert um:

  • wenn ich würde RegisterClientScriptInclude vs RegisterStartupScript verwenden?
  • wann würde ich es anrufen wollen während Page_Load vs Render vs PreRender vs einen Knopf klicken? Wie gebe ich RegisterXxxxScriptXxx den Pfad zu "Scripts/jquery-1.7.2.min.js"?

Kurzfassung: Wie konvertiere ich

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" 
    Inherits="_Default" %><!DOCTYPE html> 
<html> 
<head runat="server"> 
    <script type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></script> 

zur Verwendung in einem Usercontrol:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MySuperCoolControl.ascx.cs" Inherits="Controls_MySuperCoolControl" %> 
+0

Wenn ich eine benutzerdefinierte Kontrolle gemacht wurde, ich, dass die Basis eine Boolesche Variable setzen auf ihr meine Steuerung automatisch registrieren oder nicht die volle jQuery-Bibliothek. Auf diese Weise habe ich den Endbenutzer verlassen, um zu entscheiden, wie er die jQuery aufnehmen möchte. Meine benutzerdefinierte automatische Steuerung oder auf seine Art und Weise. – Aristos

+0

Sie sind verwirrt, weil Sie nicht in Betracht ziehen, dass jede Lösung, die Sie erwähnt haben, unterschiedliche Situationen (mehr oder weniger) behandelt. Zum Beispiel wird so etwas wie ein Framework-Include nicht beim Laden einer Seite stattfinden (beim Initiieren des Zwischenspeicherns von Bildern würde dies auf dem Framework beruhen). –

+0

Ich würde sagen, dass die einzigen drei zu berücksichtigen sind, 1, 5 und 7. Die anderen sind entweder Instanz oder Ereignis-basierte Situationen, die nicht wo ein Framework enthalten sein sollte. –

Antwort

1

[dies ist nur relevant, wenn Ihre Benutzersteuerung verwendet werden soll im Haus. Wenn es für die Verteilung ist, dann wird es nicht viel helfen]

Werfen Sie einen Blick auf diesen Link:

http://www.codeproject.com/Articles/196727/Managing-Your-JavaScript-Library-in-ASP-NET

Der Artikel legt nahe Methoden Erstellen von Verweisen auf JavaScript-Bibliotheken wie jQuery zu erzeugen, Wenn Sie es auf einer Seite verwenden möchten, rufen Sie einfach JavascriptLoader.IncludeJQuery() [oder was auch immer Sie Ihre Methode aufgerufen haben].

Nun, was ich getan habe, ist es einen Schritt weiter zu gehen, indem ich diese Methoden in einer Assembly, die ich im GAC platziert habe, so erstellt habe, dass sie für alle meine .net Webanwendungen verfügbar ist. Jetzt, wo auch immer ich jQuery verwenden möchte, ist diese Methode bereits verfügbar. Die beste Sache ist, dass, wenn ich die Methode in einem Benutzersteuerelement aufrufen und es erneut in einem anderen Benutzersteuerelement und erneut auf der Seite aufrufen, es die Bibliothek nur einmal registriert. Wenn ich mich entscheide, auf eine neuere Version von jQuery zu aktualisieren, ändere ich einfach meine DLL und sie wird überall geändert.

2

Sie können ein ScriptManagerProxy auf dem UserControl und ein ScriptManager auf der übergeordneten oder Masterseite verwenden.

Siehe How Do You Use ScriptManagerProxy In a custom ASP.NET Control

Dies würde kümmern „Giving RegisterXxxxScriptXxx den Pfad zu "Scripts/jquery-1.7.2.min.js" und die Notwendigkeit, darüber während der Page_Load/Page_PreRender Ereignisse sorgen entfernen.

Wie bei „Wann sollte ich RegisterClientScriptInclude vs Registerstartup benutzen?“

RegisterClientScriptInclude eine externe JS-Datei registriert in der Seite enthalten sein. RegisterStartupScript in der Seite einen Block von Inline-ausführbarem Skript enthält, die nicht in ist eine externe Datei.

3

können Sie Google jquery gehostet wie folgt:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> 
Verwandte Themen