0

オンラインで見つけた jQuery 拡張テキスト ボックスに基づいて、最初の ASP.NET サーバー コントロールを作成しています。元のコードの一部に jQuery 拡張ファイルが含まれているため、それをコントロールに含める必要があります。(基本 jQuery ライブラリは Web アプリケーションの要件であるため、ここでの目的のために、コントロールが使用されるすべてのページで既に利用可能であると安全に想定できます。)

最初に javascript ファイルをリソースとして追加し、コントロールの Render イベントにストリームを書き込むことができました。必要に応じて HTML/javascript を作成しましたが、jQuery は正しく機能しません。

私が抱えている2番目の問題は、特定のページで使用されるコントロールのインスタンスがいくつかあると予想されるため、上記の方法が機能したとしても、そのJavaScriptが常に繰り返されることです。うん。

この JavaScript を自分のコントロールに含めるにはどうすればよいですか?ただし、その単一の反復のみがレンダリングされるようにするにはどうすればよいですか? グーグルは、 as [assembly]attribute およびを使用することへの参照をいくつか見つけましPage.RegisterClientScriptResourceたが、それについてはあまり明確ではありません。

4

2 に答える 2

0
Page.ClientScript.RegisterClientScriptResource(getType(page), _
   page.ResolveUrl("~/scripts/jquery.js")

RegisterClientScriptResourceの全体的なポイントは、ページが重複するスクリプトを再ロードしないようにすることです。

上記の例は、イントラネットで作業していることを前提としていることに注意してください。公開Webサイトで作業している場合は、CDNホストファイル(http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js)を使用することをお勧めします。

于 2011-07-14T16:41:02.580 に答える
0

1 つのアイデアは、それをページに埋め込んでから、次のように提供することです。

const string JAVASCRIPT_RESOURCE = "[namespace].[class].customJS.js"
Stream st = Assembly.GetExecutingAssembly().GetManifestResourceStream(JAVASCRIPT_RESOURCE);
StreamReader sr = new StreamReader( st );
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), 
                                             "customJS", sr.ReadToEnd(), true);

もう 1 つは、cache-controlディレクティブを追加することです。これにより、ブラウザは後続のリクエストのためにローカル キャッシュからそれをロードします。リリース モードでビルドされたときにディレクティブWebResourcesを発行します。cachedebug=false

于 2011-07-14T16:24:41.850 に答える