Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 无法在UpdatePanel中嵌入的控件中启用/禁用验证程序_Asp.net_Updatepanel_Requiredfieldvalidator - Fatal编程技术网

Asp.net 无法在UpdatePanel中嵌入的控件中启用/禁用验证程序

Asp.net 无法在UpdatePanel中嵌入的控件中启用/禁用验证程序,asp.net,updatepanel,requiredfieldvalidator,Asp.net,Updatepanel,Requiredfieldvalidator,Arg。继承项目非常有趣。尤其是当它们不能很好地工作时,尤其是当它们包含UpdatePanel时 我在UpdatePanel中有一个shipping address用户控件。我们需要能够处理国际地址,所以我做的一件事就是根据所选国家是否为美国显示/隐藏状态下拉列表。此外,我在下拉列表中有一个RequiredFieldValidator 当用户控件用于应用程序其他地方的普通页面时,一切都很好。但是,在UpdatePanel中,.NET没有看到RFV,即使JavaScript看到了 地址.ascx:

Arg。继承项目非常有趣。尤其是当它们不能很好地工作时,尤其是当它们包含UpdatePanel时

我在UpdatePanel中有一个shipping address用户控件。我们需要能够处理国际地址,所以我做的一件事就是根据所选国家是否为美国显示/隐藏状态下拉列表。此外,我在下拉列表中有一个RequiredFieldValidator

当用户控件用于应用程序其他地方的普通页面时,一切都很好。但是,在UpdatePanel中,.NET没有看到RFV,即使JavaScript看到了

地址.ascx:(剪掉)

当前行为:当选择美国以外的国家时,状态下拉列表会根据情况消失,但当提交表单时,仍然会在现在隐藏的下拉列表上进行验证。没有创建任何JS错误

预期行为:鉴于上述情况,应禁用RequiredFieldValidator,并发布表单。

您是否尝试过使用该函数

它是一个ASP.NETJavaScript函数,可用于关闭客户端验证程序;在您的示例中,您应该能够在客户端javascript中执行以下操作(在其中设置enabled属性):

ValidatorEnable(document.getElementById(“”),false);

我唯一的其他建议是在国家/地区发生更改时启动异步回发,并删除状态验证程序服务器端。

我上面使用的代码是使用ValidatorEnable功能的另一种方法。它完成了同样的事情,在使用中,我得到了同样的结果。我非常确定ValidatorEnable还删除了客户端控件和验证器之间的关联-它不仅仅禁用验证器,所以它们并不完全相同。这是我唯一能可靠地完成你的目标的方法。
    <li class="form-list-question question-state">
        <span class="form-label">
          <asp:Label ID="lblState" runat="server" SkinID="FieldLabel" AssociatedControlID="ddlState" Text="State" /></span>
        <asp:DropDownList ID="ddlState" runat="server" SkinID="State" DataSourceID="dsStates" AppendDataBoundItems="true" ViewStateMode="Enabled"
        DataTextField="Name" DataValueField="Abbr" CssClass="required">
            <asp:ListItem Text="" Value=""></asp:ListItem>
        </asp:DropDownList>
        <asp:RequiredFieldValidator ID="rfvState" runat="server" EnableClientScript="true" Display="None" ControlToValidate="ddlState"
        ErrorMessage="State is required." ValidationGroup="Address" />
    </li>
        function SetFormByCountry() {
    if (isUsTerritory()) {
        $('.question-state').show();
        if ($('#rfvState').length > 0) {
            $('#rfvState').enabled = true;
        }
    } else {
        $('.question-state').hide();
        if ($('#rfvState').length > 0) {
            $('#rfvState').enabled = false;
        }
    }
}
ValidatorEnable(document.getElementById('<%=rfvState.ClientID%>'), false);