当父页面提交到服务器时,如何调用UserControl javascript?

当父页面提交到服务器时,如何调用UserControl javascript?,javascript,asp.net,user-controls,Javascript,Asp.net,User Controls,net usercontrol位于我的aspx页面上。在usercontrol中有一个javascript函数,每当包含usercontrol的页面提交到服务器时,我都会激活该函数。理想情况下,在这种情况发生之前,我不希望在父级中编写任何代码来实现这一点,但我不确定usercontrol此时能够实现什么功能。usercontrol能否知道页面正在提交给服务器,并在此之前启动该函数?这里有什么事情发生吗 这可能吗?我的描述清楚吗 谢谢 回发是一个服务器端事件。在客户端,页面正在重新加载。。。因此,

net usercontrol位于我的aspx页面上。在usercontrol中有一个javascript函数,每当包含usercontrol的页面提交到服务器时,我都会激活该函数。理想情况下,在这种情况发生之前,我不希望在父级中编写任何代码来实现这一点,但我不确定usercontrol此时能够实现什么功能。usercontrol能否知道页面正在提交给服务器,并在此之前启动该函数?这里有什么事情发生吗

这可能吗?我的描述清楚吗


谢谢

回发是一个服务器端事件。在客户端,页面正在重新加载。。。因此,如果您真的想编写客户端脚本,无论是在页面中还是回发的用户控件中,我建议您发送一个隐藏的输入或其他内容,作为是否回发的指示器。比如:

标记:

<asp:HiddenField ID="postBackFlag" runat="server" Value="false" />
客户端:

    $(document).ready(function() {
        if ($('input[id$=_postBackFlag]').val() === 'true') {
            //do stuff
        }
    });    

您可以为表单的提交事件添加客户端事件处理程序。您可以在用户控件中调用Page_Load时生成javascript,并使用Page.ClientScript.RegisterStartupScript将其添加到页面中

string key = "submitscript";

System.Text.StringBuilder script = new System.Text.StringBuilder();
script.Append("function mySubmitHandler(e) { \n");
script.Append("    // TODO my javascript here \n");
script.Append("    alert('derp'); \n");
script.Append("} \n");
script.AppendFormat("var f = document.getElementById('{0}'); \n", Page.Form.ClientID);
script.Append("if(f.addEventListener){\n");
script.Append("    f.addEventListener('submit', mySubmitHandler, false); \n");
script.Append("} else { \n");
script.Append("    f.attachEvent('onsubmit', mySubmitHandler); \n");
script.Append("} \n");

Page.ClientScript.RegisterStartupScript(this.GetType(), key, script.ToString(), true);

对于类型和关键参数的每个组合,脚本只会添加一次,因此您可以在页面上有多个用户控件,并且此脚本只会添加一次。

Ahh非常感谢您……我发现我的问题不正确……我希望在用户控件父控件提交到服务器时调用此函数。我将编辑我的问题。谢谢
string key = "submitscript";

System.Text.StringBuilder script = new System.Text.StringBuilder();
script.Append("function mySubmitHandler(e) { \n");
script.Append("    // TODO my javascript here \n");
script.Append("    alert('derp'); \n");
script.Append("} \n");
script.AppendFormat("var f = document.getElementById('{0}'); \n", Page.Form.ClientID);
script.Append("if(f.addEventListener){\n");
script.Append("    f.addEventListener('submit', mySubmitHandler, false); \n");
script.Append("} else { \n");
script.Append("    f.attachEvent('onsubmit', mySubmitHandler); \n");
script.Append("} \n");

Page.ClientScript.RegisterStartupScript(this.GetType(), key, script.ToString(), true);