2010-12-10 6 views
0

私はすべてのページがマスターページを使用するasp.net 4.0アプリケーションを持っています。私は、マスターページとページの子の両方で、いくつかの動的な側面があります。複数のScriptManagersを使用する

コードの背後にある:

<script> 
    PageMethods.GetString(OnSucceeded, OnFailed); 

    function OnSucceeded(rslt) { 
     alert('cool,worked.'); 
    } 

    function OnFailed(error) { 
     alert('ooops,failed.'); 
    } 

</script> 

:ページコンテンツ自体に続いて

using System; 
using System.Web; 
using System.Web.Services; 

namespace MyApp.Secure 
{ 
    public partial class myPage : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
     } 

     [WebMethod] 
     public static string GetString() 
     { 
      return "abc"; 
     } 
    } 
} 

の両方のために私はこの種のパターンを使用してMicrosoftのScriptManagerで構築を使用できるようにしたいと思いますですから、このテクニックを使うには、私のマスターページと私の子ページの両方に静的な[Webメソッド]を公開したいと思います。私の質問は、ScriptManagerでこれをどうやって管理するのですか?私の理解から、私はPageManagerオブジェクトを使用できるようにjavascriptライブラリが追加されるように、フォームタグ内にScriptManagerを持たせる必要があります(なぜですか?)。私は自分のマスターページに1つのScriptManagerを作成し、それをマスターページの無駄なフォームタグに入れておくべきですか?そのScriptManagerは私の子ページの[WebMethod]機能を受け取りますか?そしてそのフォームタグはどうですか:私は1つのフォームrunat = 'server'タグしか持つことができないので、私はマスターページ内で必要な他のフォームを使ってそれをどのように管理しますか?私の小さなフォームのように、ページの上部に検索機能がありますか?あなたのマスターページ上の

おかげ

答えて

0

私がScriptManagerを使用して放棄して以来、疑問が浮かび上がってきました。私はExtJSを私の[WebMethod]に直接投稿することができました。追加のMicrosoftのオーバーヘッドに頼ることなく直接できました。私は、なぜ良いJavaScriptライブラリ(ExtJsやjQueryのような)を使っている人が、ScriptManagerルートをすべての[WebMethod]に渡すのか、なぜわからないのですか?あなたは確かにそれを必要としないし、あなたのアプリケーションとは関係のないタグを使用するための特定の要求にあなたを固定するだけです。

0

AのScriptManagerは(formタグでYES)で十分であろう。マスターを継承するページには、scriptmanagerproxyコントロールを配置します。

通常、人は1つのフォームタグを使用し、フォームボタンの場合、ポストバックは検索ページにリダイレクトするような適切なアクションを処理します。私はこのメソッドのファンではありません。なぜなら、クエリー・ストリングで検索ページにリダイレクトしたいときにポストバックを処理する理由です。私は、javascriptを使用したほとんどのボタンをクリックしていずれかの適切なフォームアクションを変更するか、または送信ボタンの種類をすべて一緒にオーバーライドし、javascriptをあなたの新しいURLを構築し、場所のバーを変更して取得する

+0

Thanks Prescott。私はちょうどhttp://www.highoncoding.com/Articles/430_Calling_Page_Methods_Using_JQuery_and_Returning_JSON_Result.aspxでビデオを見つけました。私はそれがずっときれいなアーキテクチャだと思います。あなたの* .aspxページで設定した[WebMethod]メソッドが単純なURLを介してアクセスできることはわかりませんでした。私はFiddlerを使ってそれを理解できたと確信しています。だから、今すぐ私はAJAXライブラリ(ExtJs)を直接使って[WebMethod]を呼び出すだけで、Microsoftが単にWebメソッドを呼び出すだけで追加するすべてのc-r-a-pオーバーヘッドを取り除く予定です! ScriptManagers、ScriptProxies、無駄なフォーム、ugh! – sisdog

+0

彼らが静的なWebメソッドである場合、なぜ好奇心が強いのですか?私はあなたがフルページのポストバックとビューステートのものが必要だと思った。あなたが良い解決策を見つけられたらうれしい – Prescott

+0

私は既にAJAXの必要性の90%をカバーするODataとEF 4.0(私はそれが大好きです)と本格的なREST APIを持っています。私の[Webメソッド]の必要性は、ページに特有のサービスのためのものです。私はそのサービスを呼び出すjavascriptと一緒に同じページにサービスコードを持つことのカプセル化が好きです。たとえば、自分のページの1つで、AJAXを介してキューにタスクを送信するボタンを押します。その小さな要求は私のデータモデルとは関係がなく、サイト全体の機能ではありません。私はちょうど速い[Webメソッド]をポンドし、いくつかのjavascriptを追加して、それはすべて良いです! – sisdog

0

ASP.Netにはフォームタグを1つしか持てません。必要なことは、マスターページにフォームタグを配置し、maasterページを使用するページにフォームタグを持たないことです。マスターページを使用しているすべてのページに表示されるように、ScriptManagerをマスターページのformタグのすぐ下に置きます。あなたの検索機能はフォームタグ内になければならず、独自のフォームタグを持つことはできません。マスターページのフォームを使用します。更新パネルを使用すると、seachのテキストボックスとボタンを分離して、検索結果ページやそのようなものにリダイレクトするなど、コードの中で何をしたいかを行うことができます。

関連する問題