12

UserControljqueryへの参照を含むページを必要とするASP.netがあります。

昔は、含まれているページに jQuery への参照を含めるだけでした。

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

しかし、jQuery に対する私の UserControl の依存関係は内部実装の詳細であり、外部に漏れてはなりません。最終ページに jQuery を含めるように userControl に指示するにはどうすればよいですか?


これを調査すると、さまざまな関数をさまざまなタイミングで呼び出して、多くの混乱した解決策を見つけました。人々はそれらのいずれかが有効であると考える可能性があるため、それらのいずれについても言及することをためらっています。うまくいく答えではなく、正しい答えを望んでいます。

さまざまなソリューションには、次の呼び出しが含まれます。

私の混乱は次のことに集中しています。

  • 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" %>
4

4 に答える 4

3

Google がホストする jquery を次のように使用できます。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
于 2012-06-10T10:55:50.573 に答える
1

[これは、ユーザー コントロールを社内で使用する場合にのみ関係します。配布用の場合はあまり役に立ちません]

このリンクを見てください:

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

この記事では、jQuery などの JavaScript ライブラリへの参照を生成するメソッドを作成することを提案しているため、ページで使用したい場合は、JavascriptLoader.IncludeJQuery() [またはメソッドを呼び出したもの] を呼び出すだけです。

ここで行ったことは、GAC に配置したアセンブリにこれらのメソッドを作成して、すべての .net Web アプリケーションで使用できるようにすることで、さらに一歩進めることです。これで、jQuery を使用したい場所ならどこでも、そのメソッドは既に利用可能です。ユーザーコントロールでメソッドを呼び出し、別のユーザーコントロールで再度呼び出し、ページで再度呼び出しても、ライブラリは1回しか登録されません。jQuery の新しいバージョンにアップグレードする場合は、dll を変更するだけで、どこでも変更されます。

于 2012-05-29T16:01:08.110 に答える
0

コントロールが別のプロジェクトから参照されている場合は、他のアセンブリに JavaScript を埋め込むことができます。Scott Mitchell によるこの古いが良い例を参照してください。

http://www.4guysfromrolla.com/articles/080906-1.aspx

于 2012-06-28T10:44:27.597 に答える