ASP.Net attribute ["class"] = ""; - PullRequest
       4

ASP.Net attribute ["class"] = "";

1 голос
/ 03 декабря 2011

У меня есть контактная форма на моем веб-сайте.Когда я управляю mailTo следующим образом:

if (!reg.IsMatch(mailTo.Value))

, я добавлю атрибуты: name = class, value = error.Он работает правильно, но когда я попытался установить mailTo.Attributes["class"] = "";, он не работает правильно.

Код за кодом:

Regex reg = new Regex(@"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$");
//Kontroller
if (!reg.IsMatch(mailTo.Value))
      mailTo.Attributes.Add("class", "error");
else
      mailTo.Attributes["class"] = "";

Код веб-страницы:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
    <ContentTemplate>
        <span style="color: #777; text-shadow: 1px 1px 1px white;">İsim:</span>
         <input id="isim" runat="server" style="color: rgb(85, 85, 85);" type="text" name="name" />
        <span style="color: #777; text-shadow: 1px 1px 1px white;">Email:</span>
         <input id="mailTo" runat="server" style="color: rgb(85, 85, 85);" type="text" name="email" />
        <span style="color: #777; text-shadow: 1px 1px 1px white;">Mesaj:</span>
         <textarea id="mesaj" runat="server" style="color: rgb(85, 85, 85);" name="message"
                                            rows="3" cols="4"></textarea>
          <asp:Button ID="Button1" runat="server" CssClass="sendbutton sendmail" OnClick="Button1_Click"
                                            Text="Yolla" OnClientClick="easyNotification();" />
   </ContentTemplate>
   <Triggers>
      <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
   </Triggers>
</asp:UpdatePanel>

1 Ответ

0 голосов
/ 03 декабря 2011

Вам нужно проверить, существует ли атрибут первым. Если это так, то удалите его. Попробуйте следующее:

    if (String.IsNullOrEmpty(mailTo.Attributes["class"]) )
    {
        if (!reg.IsMatch(mailTo.Value))
        {
            mailTo.Attributes.Add("class", "error");
        }
    }
    else
    {
        if (!reg.IsMatch(mailTo.Value))
        {
            mailTo.Attributes.Add("class", "error");
        }
        else
        {
            mailTo.Attributes.Remove("class");
        }
    }

Нет необходимости удалять атрибут, если он еще не существует и вы не ошиблись.

Лично я бы подумал об использовании asp: TextBox и валидатора регулярных выражений: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.regularexpressionvalidator.aspx

Вы можете просто установить контроль для проверки, а также выражение (для которого доступна электронная почта в Интернете) и в коде вашего сервера вызвать if (Page.IsValid) {... do stuff ...}

Кроме того, Visual Studio.Net предлагает это как выражение для адреса электронной почты в Интернете:

Regex emailValidator = new Regex("\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...