4

ASP.NET MVC プロジェクトと jQuery を使用して非同期要求を処理しています。非同期リクエストの場合、HTML スニペットと一緒に初期化 JavaScript スニペットを返して実行する必要がある場合があります (この JavaScript をサーバーでレンダリングしたい)。

今のところ、RegisterStartupScript() メソッド (HttpContext.Current.Items にデータを追加する) で独自の ScriptsHelper クラスを使用しています。次に、非同期リクエストの global.asax HttpApplication.EndRequest() で、登録されているすべてのスクリプトを出力に追加します (タグで囲まれています)。jQuery.fn.load() は、受信した HTML が DOM に追加されると、それらを正常に実行します。これはまさに私が必要としているものです。それは「正しい」(良い)解決策だと思いますか、それともより良い解決策を提案できますか?ありがとう。

4

2 に答える 2

1

jqueryを使い始める前に、プロジェクトで同様の状況に遭遇し、結局はを使用することになりましたeval()。DOMに挿入していた残りのHTMLとともに、非表示のDOM要素の値の一部としてjavascriptテキストスニペットを返していました。

IE6で動的に生成されたこのタイプのJavaScriptのデバッグに多くの問題があったため、評価されたDOM要素の値を検査できたため、このソリューションは適切に機能しました。しかし、私はいつもを使うことに嫌気がさしてきましたeval

あなたのソリューションは、私のスパゲッティコードとは対照的に、サーバー側のレンダリングに適したアーキテクチャを備えているようです。この手法は、jQuery.fn.loadの精神にぴったり合っているように見えるので、あまり心配する必要はありません。

于 2009-06-17T19:49:47.237 に答える
0

ええ、jQuery が内部的に eval() を呼び出していると思います。append を使用していますか? ほとんどの場合、この手法はかなりうまく機能すると思います。サーバーから返されたデータが繰り返されるリストにある場合は、jQuery 1.3 に追加された live 関数を使用して確認することをお勧めします。これにより、セレクターに一致する現在および将来のすべての要素にイベントをアタッチできます。これらの記事をチェックしてください:

また、考慮すべき他のものとして、 asp.net mvc のスクリプトと css を管理するためのツールがあります。私はこれを使用しており、ファイルを結合するだけでなく圧縮するので気に入っています。Web構成からもすべて構成できます。

于 2009-06-22T10:59:37.630 に答える