2012-02-28 13 views
0

私は.net/c#を使ってWebアプリケーションを開発しています。私はそれがJavaScriptのを使用してクライアント側からmethhodと呼ぶユーザーコントロールを持っています。しかし、ページメソッドは親ページに置くと呼び出すことができますが、メソッドをユーザーコントロールコードファイルに入れるとできません。しかし、何らかの理由で私は親ページを制御することはできませんが、ユーザーコントロールを完全に制御できます。この限界を克服するには?これは、ユーザーコントロールにページメソッドを書き込むのに有効ですか?

は、私はこのようなJavaScriptを使用してpagemethodを呼び出す:

jQuery("[id$='tb_UserName']").blur(function() { 
var login = jQuery("[id$='tb_UserName']").val(); 
    PageMethods.SearchUserName(login, SearchUserNameCallback); 
}); 
function SearchUserNameCallback(result) { 
    alert(result); 
} 

ページメソッドSearchUserNameは、次のように定義されます。

[WebMethod] 
public static string SearchUserName(string name) 
{ 
    ... 
} 

方法は問題がない、ただそれは場所が大きな違いを生むのです。私はそれをユーザーコントロールコードファイルに入れた場合、 "Pagemethods is undefined"というエラーが出ます。私は親コードファイルに入れて、それは正常に動作します。しかし、私は親ファイルを制御できません。私はテスト環境でしか実行できません。

答えて

1

ページメソッドはページレベルでのみ存在するためです。さまざまなスコープに存在できるものが必要な場合は、ASMXまたはWCF Webサービスを使用してScriptManagerにServiceReferenceとして含める必要があります。

+0

ユーザーコントロールからWebサービスを呼び出すことは可能ですか? –

+0

はい、どこからでも電話できます。特別なScriptManagerProxyコントロールがあります。このコントロールを使用すると、ページ・ハイディリーの上位コンポーネント(「ScriptManager on MasterPage」、ScriptManagerProxyページ/ユーザー・コントロール)からスクリプト・マネージャを「拡張」できます。 – Steven

関連する問題