2

私はここでの提案に従おうとしています: JavaScript から ASP.NET 関数を呼び出しますか?

しかし、それは私にとってはうまくいきません。ページはポストバックします。しかし、私のRaisePostBacKEvent決して発砲しません。私はこれをページではなくユーザーコントロールで行っています:

public partial class MyTreatment : System.Web.UI.UserControl, IPostBackEventHandler

これを機能させる方法について何か提案はありますか?

ありがとう

4

2 に答える 2

5

ページの ClientID ではなく、コントロールの ClientID を指定していますか (参照した他の SO の質問の例のように)。

そうでない場合は、ページがポストバックしているのに、コントロールで RaisePostBack メソッドを呼び出さない理由が説明されます。

コントロールの ClientID を参照するには、次のように __doPostBack 関数を呼び出します。

__doPostBack("<%= yourControlID.ClientID %>", "an argument");

補足として、コントロールがページ上の唯一のコントロールである場合、コントロールのGetPostBackEventReferenceを呼び出さない限り、ASP.NET によって __doPostBack 関数は作成されません。

必ずしも参照を使用する必要はありませんが、ページがクライアント側関数を生成することを認識できるように、メソッドを呼び出す必要があります。

次のように GetPostBackEventReference を呼び出すことができます。

public class MyTreatment : UserControl, IPostBackEventHandler
{
    protected override void OnLoad(EventArgs e)
    {
        string postBackEventReference = Page.ClientScript.GetPostBackEventReference(this, string.Empty);

        base.OnLoad(e);
    }

    public void RaisePostBackEvent(string eventArgument)
    {

    }
} 

お役に立てれば。

于 2011-09-23T20:15:37.613 に答える
2

ユーザー コントロール インスタンス ID の UniqueID プロパティを使用して動作するはずです (個人的な経験では、これを ClientID で動作させることはできませんでした)。そのようです:

__doPostBack("<%= yourControlID.UniqueID %>", "arg");
于 2011-09-23T19:59:36.607 に答える