如何从asp.net中的codebehind调用javascript函数

时间:2013-01-18 14:26:51

标签: c# asp.net

protected void addSchoolButtonClick(object sender, ImageClickEventArgs e)
    {

        Page.ClientScript.RegisterStartupScript(GetType(), "MyKey1", "SchoolSearchPopUp();", true);

        /*Some code*/
    }

我正在asp.net开发一个网站。在一个超级链接onclick事件我想调用一个javascript function"SchoolSearchPopUp()"。这个函数用于创建一个新的弹出窗口,它正常工作。但我的问题是,一个javascript函数正在调用或弹出窗口只在执行该函数中的其余代码后打开,并且该代码需要弹出的一些数据。如何在执行该函数中的其余代码之前创建弹出窗口。

4 个答案:

答案 0 :(得分:0)

将回发触发器更改为弹出窗口中的内容。

答案 1 :(得分:0)

我认为javascript不能从后面的代码中调用。 C#从服务器运行,java是客户端。这里对类似的问题有一个很好的解释:http://forums.asp.net/t/1117189.aspx

如果您需要执行javascript函数,可以尝试将超链接更改为按钮并使用OnClientClick属性。这将执行脚本客户端而不是调用服务器上的方法。

     <asp:button id="Button1"
                 text="Click Here"
                 onclientclick="SchoolSearchPopUp()"
                 runat="server" />

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.onclientclick.aspx

答案 2 :(得分:0)

您需要在页面上编写JavaScript以首先处理按钮的单击,然后调用服务器上的页面方法。 将OnClientClick属性添加到您的button元素并从那里运行您的JavaScript方法:

<asp:Button ID="TestButton" OnClientClick="SchoolSearchPopup()" Text="Click Me" OnClick="addSchoolButtonClick" runat="server"/>

<script type="text/javascript">
    function SchoolSearchPopup()
    {
        alert("Popup");
    }
</script>

答案 3 :(得分:0)

如果你想在回发之前执行一些javascript,你需要将超链接的click事件注册到js方法,然后在执行你想要运行的任何客户端逻辑后将你的帖子提交给服务器。 (不是相反,使用RegisterStartupScript)

示例:

$("#myHyperLink").click(function() {

    // do page logic, in your case show a modal window
    $("#myModalDivContainer").show();


    // submit your post to the server... replace targetClientID with ID of server control you're posting to
    __doPostBack('targetClientID', '');

   // NOTE: If you want to perform an AJAX request instead simply use some jQuery here instead. it's up to you how to handle the request from this point :)

});

希望这有帮助!