簡體   English   中英

RaisePostBackEvent:根據引起回發的用戶控件引發自定義或默認回發事件方法

[英]RaisePostBackEvent: raise custom or default postback event method based upon the user control that caused the postback

我有一個同時包含javascript和ASP.NET用戶控件的ASP.NET頁。 執行回發后,我使用RaisePostBackEvent方法確定應調用的方法。 這樣,就有可能通過javascript觸發回發。 例如,我通過通過javascript觸發的回發加載用戶控件。 但是,此類用戶控件的事件無法再通過回發引發,因為調用了RaisePostBackEvent方法,而不是默認的回發行為。 因此,如何從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.
    }
}

您可以將回發邏輯放入單獨的方法中:

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

因此您也可以從RaisePostback調用它:

...
else 
{
   DoButtonLogic();
}

我在包含javascript的用戶控件的OnInit事件方法中有以下語句:

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

刪除該語句后,它將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM