Я новичок в ASP.NET, просто у меня есть несколько вопросов о том, как работает контроль проверки: допустим, у меня есть учебник и пользовательская проверка, например:
<asp:TextBox ID="txtTest" runat="server" ValidationGroup="test" OnTextChanged="txtTest_TextChanged" />
<asp:CustomValidator ID="CustomValidator" runat="server" ClientValidationFunction="validatePhoneNumbers" ErrorMessage="xxx" OnServerValidate="CustomValidator_ServerValidate">*</asp:CustomValidator>
и кнопка для отправкиФорма для сервера
<asp:Button ID="Button" runat="server" OnClick="Button_Click" Text="Submit" />
Допустим, я отключил JavaScript, поэтому нет проверки JavaScript на стороне клиента.
Q1-Каждый элемент управления проверки имеет метод public void Validate ();
, поэтому это означает, что Validate ()сначала вызывается метод, который косвенным образом вызывает метод CustomValidator_ServerValidate ()?
В документе Q2-MSDN говорится:
Если запрос является обратной передачей, вызываются обработчики управляющих событий.После этого вызывается метод Validate всех элементов управления validator, который устанавливает свойство IsValid отдельных элементов управления validator и страницы.
, что означает, что сначала вызывается txtTest_TextChanged (), затем CustomValidator_ServerValidate (), поэтому какой смысл проверять Page.IsValid следующим образом:
protected void txtTest_TextChanged(Object sender, EventArgs e)
{
if (!Page.IsValid) return;
lblMessage.Text = "Txt changed!";
}
, поскольку IsValid можно установить только после вызова обработчиков событий управления?