2009-05-06 3 views
4

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

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

答えて

1

私はjqueryを使い始めてからeval()を使うことで似たような状況に遭遇しました。私はDOMに挿入していたHTMLの残りの部分とともに、非表示のDOM要素の値の一部としてJavaScriptのテキストスニペットを返していました。

私はこのタイプの動的に生成されたjavascriptをIE6でデバッグするのに苦労しました。このソリューションは、私がeval'dを取得していたDOM要素の値を調べることができたからです。しかし、私はいつもevalを使用しています。

私のスパゲッティコードとは対照的に、あなたのソリューションがサーバー側のレンダリングに合理的なアーキテクチャを持っているように思えます。このテクニックはjQuery.fn.loadの精神に合っているようです過度に。

0

私はjQueryが内部的にeval()を呼び出していると思います。あなたは追加を使用していますか?私は、この技法はほとんどの場合かなりうまくいくと思います。サーバーから返されたデータが繰り返しリストに含まれている場合、jQuery 1.3に追加されたライブ関数を使用して調べることができます。セレクタに一致する現在および将来のすべての要素にイベントを添付することができます。考慮すべき何か他のものがtool to help manage scripts and css for asp.net mvcあるとしても

:これらの記事をチェックアウト。私はこれを使用していて、ファイルを結合するだけでなく圧縮するので、私はそれを愛しています。あなたはそれもあなたのWeb設定からすべて設定することができます。

関連する問題