asp.net - 使用 js 执行 AsyncPostBack

Cri*_*riu 5 javascript asp.net ajax asp.net-ajax

我花了将近3个小时来处理以下案例:

  • 我想从 JavaScript 触发 AsyncPostBack 但也能够发送相同的参数,因为我在服务器端需要它。

我尝试了很多情况,但找不到明确的例子。

我有一个更新面板,当我按下其中的特定图像按钮时,会显示一些弹出窗口。(弹出窗口最初是隐藏的,当请求完成时,被display:none删除=>它看起来很好)

 function BeginRequestHandler(sender, args) {
    }
    function EndRequestHandler(sender, args) {
        document.getElementById('popup').style.display = '';
        document.getElementById('overlay').style.display = '';

    }
Run Code Online (Sandbox Code Playgroud)

好吧,问题是我需要创建一个 js 函数来执行 asyncPostBack,因为当单击该控件的某些部分时将从 Flash 控件调用该 js 函数,因此我想模拟对图像的单击。(因为单击此弹出窗口会显示如上所示)

问题是我无法在任何地方找到这样的例子。这个js函数将接收一个参数,因此当我进行回发时,我希望能够在服务器端获取该参数。(这个参数似乎是主要问题=-当我进行回发时如何将其发送到服务器?)。

抱歉,如果我不太清楚,但是您能给我一些有关此内容或示例的文档吗?

多谢!

更新: 请注意我已经完成的第一个案例,在我的 UpdatePanel 中使用 ImageButton:

<asp:ImageButton ID="lnkDetails" runat="server" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Logo") %>'
                            AlternateText='<%# DataBinder.Eval(Container.DataItem, "Name") %>' OnCommand="lnkDetails_Command"
                            CommandArgument='<%# DataBinder.Eval(Container.DataItem, "TenantID") %>' Text="Click">
                        </asp:ImageButton></li>
Run Code Online (Sandbox Code Playgroud)

我只需要“模拟”此点击,使用 javascript 进行异步回发(因为当我从 flash 调用时,flash 控件将调用我的 js 方法进行回发)

Jam*_*son 1

这应该工作得很好:

<asp:ImageButton ID="ImageButton1" runat="server" OnClientClick='return doSomething(<%#Eval("SomeValue")%>);' />
Run Code Online (Sandbox Code Playgroud)

编辑:尝试用以下内容包装您的 JavaScript 函数:

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function () {
    doSomething = function(argument){
        __doPostBack("<%=ImageButton1.ClientID%>", argument);
        return true; //don't know if you need this
    }
});
Run Code Online (Sandbox Code Playgroud)

编辑:检查ScriptManager并确保EnablePartialRendering设置为 true。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" ... />
Run Code Online (Sandbox Code Playgroud)

在隐藏代码中:

protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
    //call the RaisePostBack event 
    base.RaisePostBackEvent(source, eventArgument);

    if (source == ImageButton1)
    {
        string arg = eventArgument;
    }
}
Run Code Online (Sandbox Code Playgroud)