Ian*_*oyd 12 asp.net jquery user-controls
我有一个ASP.net UserControl
,要求包含页面包含对jquery的引用.
在过去,我只是在包含页面中包含对jQuery的引用:
<HEAD>
<SCRIPT type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></SCRIPT>
</HEAD>
Run Code Online (Sandbox Code Playgroud)
但是我的UserControl对jQuery的依赖是一个内部实现细节,不应泄漏到外部.我的userControl如何指示jQuery包含在最终页面中?
研究这个,我发现很多困惑的解决方案,在不同的时间调用不同的功能.我不愿提及其中的任何一个,因为人们可能认为它们中的任何一个都是有效的.我希望得到正确的答案,而不是一个有效的答案.
不同的解决方案涉及:
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
vs Render
vs PreRender
vs按钮点击期间调用它?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>
Run Code Online (Sandbox Code Playgroud)
用于UserControl:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MySuperCoolControl.ascx.cs" Inherits="Controls_MySuperCoolControl" %>
Run Code Online (Sandbox Code Playgroud)
[这仅在您的用户控件要在内部使用时才相关。如果它是为了分发那么它不会有太大帮助]
看看这个链接:
http://www.codeproject.com/Articles/196727/Managing-Your-JavaScript-Library-in-ASP-NET
本文建议创建方法来生成对 javascript 库(例如 jQuery)的引用,这样,如果您想在页面中使用它,您只需调用 JavascriptLoader.IncludeJQuery() [或任何您调用的方法]。
现在,我所做的是更进一步,在我放置在 GAC 中的程序集中创建这些方法,以便它可用于我的所有 .net Web 应用程序。现在,无论我想在哪里使用 jQuery,该方法都已经可用。最好的事情是,如果我在用户控件中调用该方法,然后在另一个用户控件中再次调用它,然后在页面上再次调用它,它仍然只注册该库一次。如果我决定升级到较新版本的 jQuery,我只需更改我的 dll,并且它会随处更改。
归档时间: |
|
查看次数: |
21964 次 |
最近记录: |