从服务器调用jQuery函数(在Updatepanel中)

本文关键字:Updatepanel 函数 服务器 调用 jQuery | 更新日期: 2023-09-27 18:00:44

我想从服务器调用jQuery函数
调用函数的服务器端按钮位于UpdatePanel内部
这是服务器端的功能:

//Button Click handler (It is inside Updatepanel)
string ScriptName = null;
ScriptName = "function pageLoad(sender, args) { if (args.get_isPartialLoad()) {DisplayMessage(); }}";
ScriptManager.RegisterStartupScript(this, GetType(), "DisplayMessage", ScriptName, true);

这是客户端功能:

 <script type="text/javascript">
        function DisplayMessage() {
            //Alert("Called");
        }
</script>

它不起作用
怎么了?(我的问题清楚吗?)

从服务器调用jQuery函数(在Updatepanel中)

这很奇怪,因为以下对我来说非常好:

<%@ Page Language="C#" %>
<script type="text/c#" runat="server">
    protected void BtnTrigger_Click(object sender, EventArgs e)
    {
        string script = "function pageLoad(sender, args) { if (args.get_isPartialLoad()) {DisplayMessage(); }}";
        ScriptManager.RegisterStartupScript(
            this, 
            GetType(), 
            "DisplayMEssage", 
            script, 
            true
        );
    }
</script>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script type="text/javascript">
        function DisplayMessage() {
            alert('called');
        }
    </script>
</head>
<body>
    <form id="Form1" runat="server">
        <asp:ScriptManager ID="scm" runat="server" />
        <asp:LinkButton 
            ID="BtnTrigger" 
            runat="server" 
            Text="Trigger" 
            OnClick="BtnTrigger_Click" 
        />
        <asp:UpdatePanel ID="up" runat="server">
            <Triggers>
                <asp:AsyncPostBackTrigger 
                    ControlID="BtnTrigger" 
                    EventName="Click" 
                />
            </Triggers>
        </asp:UpdatePanel>
    </form>
</body>
</html>

同样,你真的需要所有复杂的脚本吗?为什么不简单地使用string script = "DisplayMessage();";呢?

在页面中创建一个display:nonediv。将其放在更新面板中。这不会干扰你的设计。执行页面中的每个客户端脚本

<div id="scriptContainer" runat="server" style="display:none;"></div>

然后把你的js粘贴到一个事件上。

scriptContainer.innerHTML = "<script type=text/javascript>DisplayMessage();</script>";

希望能有所帮助。