Проверка на стороне сервера в ASP.NET 2.0 - PullRequest
1 голос
/ 01 июня 2010

Мое приложение в ASP.NET 2.0 с C #. У меня есть средство проверки правильности регулярного выражения с регулярным выражением ^[0-9]*(\\,)?[0-9]?[0-9]?$, теперь мой клиент не хочет эту проверку на стороне клиента, но при нажатии кнопки, т. Е. На стороне сервера.

EX: я должен проверить значение txtPrice textbox

Пожалуйста, дайте мне знать, как я могу поставить проверку правильности регулярного выражения на стороне сервера.

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 01 июня 2010

Вы можете использовать CustomValidator, который может ссылаться на событие на стороне сервера:

<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator" OnServerValidate="CustomValidator1_Validate"></asp:CustomValidator>

Затем на стороне сервера вы можете проверить ввод

protected void CustomValidator1_Validate (object source, ServerValidateEventArgs argss)
{}

Не забудьте обернуть ваш щелчок кнопки отправки с

if(IsValid) {}

Чтобы обеспечить соблюдение всех валидаторов

1 голос
/ 01 июня 2010

Попробуйте добавить EnableClientScript="false" в валидатор.

1 голос
/ 01 июня 2010

Элемент управления будет проверяться на стороне сервера всегда, независимо от того, включена ли также проверка на стороне клиента. Но вы должны не забыть проверить значение Page.IsValid, прежде чем принимать обратную передачу ...

Как уже было сказано, вы можете отключить проверку на стороне клиента с помощью атрибута.

0 голосов
/ 01 июня 2010

Проверка на стороне клиента с использованием серверных элементов управления на основе ValidatorBase выполняется только на PostBack, т. Е. При любом щелчке кнопки / ссылки на стороне сервера.

Таким образом, вы можете использовать RegularExpressionValidator :

<asp:TextBox runat="server" ID="txtPrice" />
<asp:RegularExpressionValidator runat="server" ControlToValidate="txtPrice" ValidationExpression="^[0-9]*(\\,)?[0-9]?[0-9]?$" ErrorMessage="Input is incorrect" />

Также вы можете использовать CustomValidator :

<asp:TextBox runat="server" ID="txtPrice" />
<asp:CustomValidator runat="server" ControlToValidate="txtPrice" ErrorMessage="Input is incorrect" OnServerValidate="CustomValidator1_ServerValidate" />

protected void CustomValidator1_ServerValidate(object sender, ServerValidateEventArgs e)
{
    // use e.Value to validate and set e.IsValid
    // it's different depending on control to validate.
    // for custom controls you can set it using ValidationPropertyAttribute
}
...