UserControljqueryへの参照を含むページを必要とするASP.netがあります。
昔は、含まれているページに jQuery への参照を含めるだけでした。
<HEAD>
<SCRIPT type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></SCRIPT>
</HEAD>
しかし、jQuery に対する私の UserControl の依存関係は内部実装の詳細であり、外部に漏れてはなりません。最終ページに jQuery を含めるように userControl に指示するにはどうすればよいですか?
これを調査すると、さまざまな関数をさまざまなタイミングで呼び出して、多くの混乱した解決策を見つけました。人々はそれらのいずれかが有効であると考える可能性があるため、それらのいずれについても言及することをためらっています。うまくいく答えではなく、正しい答えを望んでいます。
さまざまなソリューションには、次の呼び出しが含まれます。
- 通話
this.Page.ClientScript.RegisterClientScriptInclude中Render - 通話
this.Page.ClientScript.RegisterStartupScript中Render - 通話
this.Page.ClientScript.RegisterStartupScript中Page_Load this.Page.ClientScript.RegisterStartupScriptボタンクリック中の呼び出し- 呼び出し
Page.Header.Controls.Add(new LiteralControl( { Text = "<script type=\"text/javascript\" src=\"...\"></script>";); - ファイルに
<SCRIPT>要素を含めるだけですuserControl.ascx - 通話
RegisterClientScriptBlock中OnPreRender
私の混乱は次のことに集中しています。
RegisterClientScriptIncludeいつvsを使いたいRegisterStartupScriptですか?Page_Loadボタンのクリックとボタンのクリックの間に、いつRender呼び出したいPreRenderですか?RegisterXxxxScriptXxxへのパスを指定するにはどうすればよい"Scripts/jquery-1.7.2.min.js"ですか?
短いバージョン: どうすれば変換できますか
<%@ 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>
UserControl で使用する場合:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MySuperCoolControl.ascx.cs" Inherits="Controls_MySuperCoolControl" %>