所以问题在这里。我在一个.ascx控件中有一个DropDownList,上面有一个CustomValidator。该控件具有PageLoad中的属性设置的ValidationGroup。触发验证的按钮位于另一个使用此控件的文件中。问题是服务器端验证从未被触发。我在其中添加了断点,但它们从未被命中。有人对发生了什么有任何想法吗?以下是代码:
在使用Dropdown.ascx的父文件中,我有这个按钮:
Dropdown.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”,但仍然得到相同的结果。我漏掉了什么吗?