.NET CustomValidator: кнопка «Запретить отправку» - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь добавить валидатор настраиваемого поля в какой-нибудь устаревший код.Если электронная почта не принадлежит определенному домену, это должно предотвратить запуск формы.

Вот моя разметка.

<asp:Textbox id="tbEmail" autocomplete="off" CssClass="txt260" runat="server" TabIndex="1"></asp:Textbox>          
<asp:RequiredFieldValidator id="rfvEmail" runat="server" Display="Dynamic" ForeColor="" ControlToValidate="tbEmail" ErrorMessage="Required" CssClass="ValidatorError">Required</asp:RequiredFieldValidator>
<asp:CustomValidator id="cfvEmail" runat="server" Display="Dynamic" ControlToValidate="tbEmail" ErrorMessage="Invalid Email" CssClass="ValidatorError" OnServerValidate="tbEmail_CustomValidate"></asp:CustomValidator>
<asp:RegularExpressionValidator id="regExpEmail" runat="server" Display="Dynamic" ForeColor="" ControlToValidate="tbEmail" ErrorMessage="Invalid" CssClass="ValidatorError"></asp:RegularExpressionValidator>

...

<asp:Button ID="bSubmit" Text=" CREATE ACCOUNT " CssClass="NewButton" runat="server" OnClientClick="DisabledUpdateButton()" OnClick="bSubmit_Click" />

Вот код C #:

protected void tbEmail_CustomValidate(object source, ServerValidateEventArgs args)
{
    List<string> approvedEmailDomains = new List<string>()
    {
        "domainnameihid.com"
    };

    if (!approvedEmailDomains.Any(x => tbEmail.Text.EndsWith(x)))
    {
        args.IsValid = false;
    }
}

Когда я пишуневерное доменное имя, код попадает в args.IsValid = false.Как только args.IsValid имеет значение false, он все равно продолжает запускать кнопку отправки.Обязательные и регулярные поля валидаторы не делают.Как получить CustomValidator, чтобы предотвратить запуск или выполнение OnClick кнопки?

1 Ответ

0 голосов
/ 12 декабря 2018

Вам также необходимо создать проверку на стороне клиента.Вы делаете это с помощью ClientValidationFunction Валидатора.

<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="tbEmail"
   ClientValidationFunction="allowedDomains" ErrorMessage="Not Valid"></asp:CustomValidator>

<script type="text/javascript">
    function allowedDomains(sender, element) {
        var approvedDomains = ['<%= string.Join("', '", approvedEmailDomains) %>'];
        element.IsValid = $.inArray(element.Value, approvedDomains) > -1;
    }
</script>

Чтобы это работало, вам необходим public Список

public List<string> approvedEmailDomains;

protected void Page_Load(object sender, EventArgs e)
{
    approvedEmailDomains = new List<string>()
    {
        "domainnameihid.com",
        "stackoverflow.com"
    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...