RequiredFieldValidator и стиль - PullRequest
       12

RequiredFieldValidator и стиль

0 голосов
/ 15 января 2010

Возможно ли с помощью стандартных валидаторов полей .Net изменить стиль текстового поля, в котором происходит ошибка?

Если я, например, иметь поле phonenumber, которое необходимо заполнить, оно должно создать красную рамку вокруг текстового поля при отправке, если поле не заполнено.

Надеюсь, это можно сделать с помощью стандартных элементов управления, поэтому мне не нужно перекодировать его, например, с помощью. плагин проверки jQuery и т. д.

-Dofs

Ответы [ 2 ]

1 голос
/ 21 января 2013

Вы можете сделать это с нативными компонентами из ASP.Net:

На вашей странице ASP:

<asp:TextBox ID="TextBox1" runat="server"/>

<asp:CustomValidator ID="CustomValidator1" runat="server" OnServerValidate="ValidateTextBox1"   ForeColor="Red" SetFocusOnError="true"></asp:CustomValidator>

В коде позади:

    protected void ValidateTextBox1(object source, ServerValidateEventArgs args) 
            {
                if (TextBox1.Text == string.Empty)
                {
                    args.IsValid = false;
                    TextBox1.Style.Add("border", "solid 1px red");
                    CustomValidator1.Text = "required";
                }
                else
                    args.IsValid = true;

            }

PS .: При нажатии кнопки RequiredFieldValidator активируется перед CustomValidator. Если они есть на той же странице, вы должны отключить их или заменить на CustomValidator. OR

Вы можете делать с CSS и Javascript.

Класс CSS:

<style type="text/css">
    body
    {
        font-family:Arial;
        font-size:10pt;
    }
    .ErrorControl
    {
        background-color: #FBE3E4;
        border: solid 1px Red;
    }
</style>

Функция JavaScript:

<script type="text/javascript">
function WebForm_OnSubmit() {
 if (typeof (ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) {
    for (var i in Page_Validators) {
        try {
            var control = document.getElementById(Page_Validators[i].controltovalidate);
            if (!Page_Validators[i].isvalid) {
                control.className = "ErrorControl";
            } else {
                control.className = "";
            }
        } catch (e) { }
    }
    return false;
 }
 return true;
}
</script>

Теперь валидаторы ASP.net:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="TextBox1"
    runat="server" ErrorMessage="Required"></asp:RequiredFieldValidator>

OR

<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Required"
    ControlToValidate="TextBox2" ValidateEmptyText="true" ClientValidationFunction="Validate"></asp:CustomValidator>
<script type="text/javascript">
    function Validate(sender, args) {
        if (document.getElementById(sender.controltovalidate).value != "") {
            args.IsValid = true;
        } else {
            args.IsValid = false;
        }
    }
</script>
0 голосов
/ 15 января 2010

Вы можете сделать это с помощью инструментария ajax, как объяснил Ланс Чжан на этой странице .

...