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

OnInit我在包含 javascript 的用户控件的事件方法中有这个语句:

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

删除此语句后,它就起作用了。

于 2012-09-14T14:18:15.997 回答