javascript - ScriptManager.RegisterClientScriptBlock 不适用于 UpdatePanel

标签 javascript asp.net validation updatepanel scriptmanager

我有一个更新面板、一些输入字段、一个自定义验证器和一个提交按钮。 自定义验证器具有客户端和服务器验证功能。 这是示例代码。

<form id="form1" runat="server">
<div>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
            <asp:CustomValidator ID="vldcus" runat="server" OnServerValidate="vldcus_ServerValidate" ClientValidationFunction="vldcus_ClientValidate" ErrorMessage="CustomValidator"></asp:CustomValidator>
            <asp:Button ID="Button1" runat="server" Text="Save" />
        </ContentTemplate>
    </asp:UpdatePanel>
</div>
</form>

当我单击提交按钮时,客户端验证功能会触发。

这是客户端验证函数中的代码

function vldcus_ClientValidate(sender, args) {
            debugger;
            alert("This is client Script");
            args.IsValid = true;
        }

在服务器端验证功能中,我注册了一个不执行的客户端脚本 block ,我不知道为什么。这是服务器端代码。

if (TextBox3.Text == string.Empty)
        {
            ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "customScript", "ValidatorValidate(document.getElementById('" + vldcus.ClientID  +"'))", true);
            args.IsValid = false;
        }

为什么注册的脚本没有执行。

最佳答案

尝试使用此RegisterClientScriptBlock。当我自己尝试过并在后面的代码中显示警报时。

 protected void vldcus_ServerValidate(object source, ServerValidateEventArgs args)
    {
        if (TextBox3.Text == string.Empty)
        {
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "customScript", "<script>alert('This is Server Alert');</script>", false);
        }
    }

请检查下图 enter image description here

关于javascript - ScriptManager.RegisterClientScriptBlock 不适用于 UpdatePanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23889011/

相关文章:

javascript - 无法在网页上显示的 HTML 段落上叠加图像图标

javascript - javascript构造函数的细节

javascript - 在 socket.io 中显示房间

c# - 在文本框中显示时间并使用上下箭头进行修改

forms - 具有子组件和验证的 Angular 2 嵌套表单

php - JSON 错误 : parsererror

javascript - jQuery 中 deferred.resolveWith() 在哪里定义?

asp.net - 如何强制客户端浏览器从服务器下载图像而不是使用其缓存

c# - 为什么要序列化整个 HttpResponseMessage?

c# - Xamarin.Forms 条目 - 自定义行为和 MVVM