1

JavaScript と ASP.NET ユーザー コントロールの両方を含む ASP.NET ページがあります。ポストバックが実行されると、RaisePostBackEventメソッドを使用して、どのメソッドを呼び出す必要があるかを判断します。そうすれば、JavaScript を介してポストバックをトリガーすることができます。たとえば、javascript を介してトリガーされたポストバックを介してユーザー コントロールを読み込みます。RaisePostBackEventただし、このようなユーザー コントロールのイベントは、デフォルトのポストバック動作ではなくメソッドが呼び出されるため、ポストバックを介して発生させることはできなくなりました。RaisePostBackEventでは、メソッド内から、ユーザー コントロールの既定のポストバック動作を呼び出すにはどうすればよいでしょうか?

public void RaisePostBackEvent (string eventArgument) {
    string eventTarget = Request ["__EVENTTARGET"];
    if (eventTarget == UniqueID) {
        eventArgument = Request ["__EVENTARGUMENT"];
        Action action = JsonConvert.DeserializeObject<Action>(eventArgument);
        if (action.name == "display") Display(action.argument);
        else if (action.name == "edit") Edit(action.edit);
    }
    else {
        // Control control = GetPostBackControl(this.Page);
        // !!! Raise the postback event on the control.
    }
}
4

2 に答える 2

0

ポストバック ロジックを別のメソッドに入れることができます。

void Button_Click(object sender, EventArgs e)
{
   DoButtonLogic();
}

RaisePostback からも呼び出すことができます。

...
else 
{
   DoButtonLogic();
}
于 2012-09-13T10:25:50.773 に答える
0

OnInitJavaScriptを含むユーザーコントロールのイベントメソッドに次のステートメントがありました。

protected override void OnInit (EventArgs e) {
    Page.RegisterRequiresRaiseEvent(this);
}

このステートメントを削除すると、機能します。

于 2012-09-14T14:18:15.997 に答える