繁体   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