В данном случае используется раскрывающийся список, в котором для AutoPostBack установлено значение true, что обновляет другие элементы на странице.Однако тот же выпадающий список также является частью необходимого элемента в ValidationGroup при нажатии кнопки отправки.
Проблема, с которой мы сталкиваемся, заключается в том, что при изменении выпадающего списка срабатывает ValidatorOnChange, и, следовательно, кратко отображает ошибку передpostback обновляет страницу.
Исправление, которое мы планируем сделать, - удалить функцию ValidatorOnChange для выпадающего списка, но это выглядит странным взломом, поэтому нам интересно, есть ли у кого-нибудь другие предложения.
Вот очень простой список, который демонстрирует проблему:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private void OnChange(object sender, EventArgs e)
{
updateList.Visible = test.SelectedValue == "1";
updateList2.Visible = test.SelectedValue == "2";
}
private void OnSubmit(object sender, EventArgs e)
{
if (Page.IsValid)
{
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList runat="server" ID="test" AutoPostBack="true" OnSelectedIndexChanged="OnChange">
<asp:ListItem Text="Test" Value="-1" />
<asp:ListItem Text="Test 1" Value="1" />
<asp:ListItem Text="Test 2" Value="2" />
<asp:ListItem Text="Test 3" Value="3" />
</asp:DropDownList>
<asp:RequiredFieldValidator ID="DropDownListValidator2" runat="server" ControlToValidate="test"
ErrorMessage="Please select" InitialValue="-1" ValidationGroup="testGroup" />
<asp:DropDownList runat="server" ID="updateList" Visible="false" />
<asp:DropDownList runat="server" ID="updateList2" Visible="false" />
<asp:Button runat="server" ID="testSubmit" Text="Submit" ValidationGroup="testGroup"
OnClick="OnSubmit" />
</div>
</form>
</body>
</html>