Создание пользовательского ответа с элементами управления проверкой ASP.NET - PullRequest
1 голос
/ 31 июля 2011

Мне нужно проверить различные элементы управления ASP.NET, но вместо отображения стандартного текста / звездочки / изображения рядом с каждым при сбое проверки мне нужно отобразить пользовательский контент (изменить цвет контура входного текстового поля, отобразить подсказку , так далее.). Я мог бы использовать стандартный элемент управления валидацией в большинстве случаев (например, RequiredFieldValidator для TextBox), за исключением отображения при сбое валидации.

Я начал создавать CustomValidators, но мне нужно делать это много раз для различных проверок (обязательные поля, регулярные выражения, диапазоны). Кажется пустой тратой воссоздать логику этих валидаторов только для того, чтобы они могли изменить выходные данные ответа. В документации MS по адресу http://msdn.microsoft.com/en-us/library/3w0bs977.aspx говорится, что пользовательский ответ может быть выполнен как на клиенте, так и на сервере, в этом случае: «На стороне клиента и сервера вы можете создать пользовательский ответ, например, изменение цвета в элементе управления или изменение шрифта для текста на этикетке. " Это дает пример для стороны сервера, но не дает метод для стороны клиента. Каков наилучший способ обработки пользовательского ответа на клиенте?

1 Ответ

1 голос
/ 01 августа 2011

Эта статья может вам помочь:

http://msdn.microsoft.com/en-us/library/aa479045.aspx

В частности, в этом разделе (посмотрите «Проверка на стороне клиента», а затем там «Спецэффекты»):

<asp:Label id=lblZip runat=server 
   Text="Zip Code:"/> 
<asp:TextBox id=txtZip runat=server 
   OnChange="txtZipOnChange();" /></asp:TextBox><br>
<asp:RegularExpressionValidator id=valZip runat=server
   ControlToValidate=txtZip
   ErrorMessage="Invalid Zip Code" 
   ValidationExpression="[0-9]{5}" /><br>

<script language=javascript>
function txtZipOnChange() {
   // Do nothing if client validation is not active
   if (typeof(Page_Validators) == "undefined")  return;
   // Change the color of the label
   lblZip.style.color = valZip.isvalid ? "Black" : "Red";
}
</script>

Есть еще какая-то проводка, которую нужно сделать, которую вы можете убрать с помощью jQuery или чего-то подобного

...