gpt4 book ai didi

c# - CustomValidator 未在控制中触发

转载 作者:行者123 更新时间:2023-11-30 16:27:47 24 4
gpt4 key购买 nike

那么问题来了。我在 .ascx 控件中有一个 DropDownList,上面有一个 CustomValidator。此控件具有由 PageLoad 中的属性设置的 ValidationGroup。触发验证的按钮位于使用此控件的另一个文件中。问题是服务器端验证永远不会被触发。我在其中添加断点,它们永远不会被击中。有人对发生的事情有任何想法吗?这是代码:

下拉列表.ascx:

    <asp:DropDownList ID="ddlQuestions" runat="server">
</asp:DropDownList>
<asp:CustomValidator runat="server" ID="cvddlQuestions" OnServerValidate="cvddlQuestions_ServerValidate"
ErrorMessage="* Parent question is required." ValidateEmptyText="true" Display="Dynamic" />
</p>
</div>

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
cvddlQuestions.ValidationGroup = ValidationGroup;
//ValidationGroup is a property in the parent file that is being set on PageLoad
}

protected void cvddlQuestions_ServerValidate(object sender, ServerValidateEventArgs args)
{
args.IsValid = false;// (ddlQuestions.SelectedValue != "-1");
}

在使用 Dropdown.ascx 的父文件中,我有这个按钮:

<asp:LinkButton ID="btnQuestionAdd" runat="server" OnClick="btnQuestionAdd_Click" 
ValidationGroup="editQuestion" CommandName="add" />

背后的父文件代码:

protected void btnQuestionAdd_Click(object sender, EventArgs e)
{
Page.Validate("editQuestion");
if (Page.IsValid) //ALWAYS SEEMS TO BE TRUE
{
//Do something
}
}

当我将客户端验证函数添加到 customvalidator 时,它不会触发任何问题。但该页面总是返回有效。我尝试添加 ControlToValidate 并设置 ValidateEmptyText="true",但我仍然得到相同的结果。我错过了什么?

最佳答案

设置 DropDownList 的 CausesValidation -属性为true,默认为false

<asp:DropDownList ID="ddlQuestions" CausesValidation="True" CssClass="if" DataTextField="Question" DataValueField="iD" runat="server">

并且您还必须相应地设置它的 Validationgroup 属性(请参阅下面的属性)。

旁注:您的 UserControl 中不需要成员变量 ValidationGroup。只需使用直接设置/获取 Validator 的 ValidationGroup 属性的公共(public)属性 ValidationGroup。通过这种方式,您不需要在每次回发时都设置它,因为它无论如何都存储在 ViewState 中,如果需要,您也可以在 UserControl 本身中设置它。

public string ValidationGroup {
get { return cvddlQuestions.ValidationGroup; }
set { cvddlQuestions.ValidationGroup = value; ddlQuestions.ValidationGroup=value; }
}

关于c# - CustomValidator 未在控制中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7561378/

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