C#中的CustomValidator未拾取颜色

本文关键字:颜色 中的 CustomValidator | 更新日期: 2023-09-27 18:22:42

我正试图在网页中的下拉列表中使用CustomValidator,但在表单提交时没有正确触发,因为下拉列表的颜色没有改变。我在文本框上也做了同样的验证,但很明显,我在下拉列表中做错了什么,如果有任何帮助,我将不胜感激!

我使用必填字段验证器更改文本框颜色。无扩展器控制请

我认为现在发生的事情是在表单提交时触发验证。.cs文件和javascript文件中的逻辑是相同的,因此,如果用户禁用了javascript,则验证仍然有效。

下拉列表中的第一个值是"选择一个值",所以我的验证表明,只要不是该值,就继续。

.aspx文件

<p class="form-row">
        <asp:DropDownList ID="valueDropDown" runat="server"  CssClass="tablet" ></asp:DropDownList>
        <asp:CustomValidator ID="CustomValidator4" runat="server" ErrorMessage=""
            ControlToValidate="valueDropDown" ClientValidationFunction="ValidateDD"
            OnServerValidate="CustomValidator4_ServerValidate"
            ValidateEmptyText="True" >
        </asp:CustomValidator>
 </p>

.cs文件

 protected void CustomValidator4_ServerValidate(object source, ServerValidateEventArgs args)
        {
            bool is_valid = valueDropDown.Text != "Select a value";
            valueDropDown.BackColor = is_valid ? Color.White : Color.Red;
            args.IsValid = is_valid;
        }

Javascript

function ValidateDD(source, args) {
    var is_valid = $("#valueDropDown").val() != "Select a value";
    $("#valueDropDown").css("background-color", is_valid ? "white" : "#EEB4B4"); 
    args.IsValid = is_valid;
}

任何帮助都将不胜感激——我真的很难理解为什么这不起作用!

编辑

好吧,根据@Gian Paolo的说法,我现在已经从代码中删除了第一个必需的验证器,但我仍然遇到同样的问题。颜色仍然没有应用。

现在已经删除:

<asp:RequiredFieldValidator ID="ValidatorDD" ControlToValidate="valueDropDown" runat="server" InitialValue="-1" Text="* Please select a value" ErrorMessage="" CssClass="error" Display="Dynamic" ></asp:RequiredFieldValidator>

C#中的CustomValidator未拾取颜色

您正在附加到相同的值DropDown控件2个验证器:

<asp:RequiredFieldValidator ID="ValidatorDD" ControlToValidate="valueDropDown"... >
</asp:RequiredFieldValidator>
<asp:DropDownList ID="valueDropDown" runat="server"  CssClass="tablet" >
</asp:DropDownList>
<asp:CustomValidator ID="CustomValidator4" ...
        ControlToValidate="valueDropDown" ClientValidationFunction="ValidateDD"...>
</asp:CustomValidator>

我假设javascript将运行第一个验证程序代码,由于返回false,因此停止评估以下代码。如果JS在浏览器中被禁用,则服务器代码也是如此。尝试删除所需的FieldValidator。

此外,完善您的问题:"(我的客户验证程序)没有被提取"是什么意思?(现在才意识到我不确定我是否理解你的问题)