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:
- calling
this.Page.ClientScript.RegisterClientScriptInclude
duringRender
- calling
this.Page.ClientScript.RegisterStartupScript
duringRender
- calling
this.Page.ClientScript.RegisterStartupScript
duringPage_Load
- calling
this.Page.ClientScript.RegisterStartupScript
during a button click - calling
Page.Header.Controls.Add(new LiteralControl({ Text = "<script type=\"text/javascript\" src=\"...\"></script>";);
- simply including a
<SCRIPT>
element in youruserControl.ascx
file - calling
RegisterClientScriptBlock
duringOnPreRender
ist Meine Verwirrung zentriert um:
- wenn ich würde
RegisterClientScriptInclude
vsRegisterStartupScript
verwenden? - wann würde ich es anrufen wollen während
Page_Load
vsRender
vsPreRender
vs einen Knopf klicken? Wie gebe ichRegisterXxxxScriptXxx
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" %>
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
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). –
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. –