gpt4 book ai didi

c# - 尽管已禁用,但验证仍在显示

转载 作者:太空狗 更新时间:2023-10-29 23:17:06 26 4
gpt4 key购买 nike

我有一个用户控件,其中有两个面板,一个在左边,另一个在右边,左边是一些客户账单信息,右边是一些运输信息,运输信息中的每个字段都有一个 requiredfieldvalidator,这些面板被包装在一个更新面板中。默认状态是两个面板都可见,面板下方有一个复选框,上面写着“Shipping same as billing”,当您选中它时,右侧的“Shipping Panel”面板消失,然后您继续。

问题:假设我删除了 Shipping Name 中的文本并且我没有点击其他任何地方,然后我转到复选框“Same as billing”一会儿它以红色显示验证并且然后它消失了。我尝试创建一个禁用验证器的函数,即

RequireFieldValidator1.Enabled = false;

它在运输面板消失之前不显示验证的条款中工作正常,但可以说我改变了主意并再次单击它以显示它。现在,当我删除运输面板中的名称并单击其他地方时,它不会让我去任何地方,但不会显示验证文本。

所以我做了这个逻辑:

if (ckSameBilling.checked)
{
RequiredFieldValidator.Enabled = false;
}
else
{
RequiredFieldValidator.Enabled = true;
}

但现在它又回到了我上面演示的相同行为,清除运输名称并单击复选框。我可以立即看到红色验证。

相关代码

//All this is wrapped in an update panel
<asp:Panel ID="pnl" runat="server"><div>
asp:TextBox ID="txtShippingFirstName" runat="server" Width="130px" Columns="30"
MaxLength="100" asp:TextBox><div>

<asp:RequiredFieldValidator ID="Requiredfieldvalidator1" ErrorMessage="Name Required"
ControlToValidate="txt"
runat="server" Display="Dynamic" CssClass="Error">
</asp:RequiredFieldValidator>
</asp:Panel>

<div style="margin-left: 145px;">
<asp:CheckBox ID="Billing" runat="server" Font-Bold="True"
Text"Same as Billing" OnCheckedChanged="Billing_CheckedChanged"
AutoPostBack="True" />
</div>

代码隐藏:

protected void Billing_CheckedChanged(object sender, EventArgs e)
{
if (Billing.Checked)
{
//Disable the shipping fields validations
DisableEnable(true);
pnl.Visible = false;
}
else
{
DisableEnable(false);
pnl.Visible = true;
}
}

private void DisableEnable(bool enable)
{
if (enableFields)
{
Requiredfieldvalidator1.Enabled = false;
//a bunch of required validations below...
}
else
{
Requiredfieldvalidator1.Enabled = true;
//a bunch of required validations below..
}
}

最佳答案

在执行 UpdatePanel 的回发之前,您是否尝试过在 Javascript(而非服务器端)中禁用验证器?

您可以使用以下功能客户端来禁用您的验证器:

var yourValidator = document.getElementById('yourValidatorClientID')
ValidatorEnable(yourValidator, false);

这应该会停止验证的“闪现”。您可以根据您的 CheckBox 更改客户端。

您还可以将所有验证器包含在每个部分的单独组中,然后立即禁用整个验证器组。有关详细信息,请参阅以下 SO 线程:

Enable/disable asp.net validator controls within a specific "ValidationGroup" with jQuery?

关于c# - 尽管已禁用,但验证仍在显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9281866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com