Итак, вот в чем проблема. У меня есть DropDownList в элементе управления .ascx с CustomValidator. Этот элемент управления имеет ValidationGroup, установленную свойством в PageLoad. Кнопка, запускающая проверку, находится в другом файле, который использует этот элемент управления. Проблема в том, что проверка на стороне сервера никогда не запускается. Я добавляю в него точки останова, и они никогда не срабатывают. У кого-нибудь есть мысли о том, что происходит? Вот код:
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", но все равно получаю тот же результат. Что мне не хватает?