2013-09-09 2 views
0

Я задал аналогичный вопрос здесь, используя MySQL, PHP и jQuery, но теперь я реализую сайт в C# .NET и использую встроенную проверку ASP.NET.Проверка на повторную проверку ввода

В моей учетной записи пользователя я хочу проверить (используя ajax, а не после отправки формы), что адрес электронной почты пользователей уникален, т.е. я хочу выполнить sql-запрос, чтобы увидеть, есть ли результирующая строка с тем, что пользователь набрал в поле электронной почты. Из того, что я прочитал, нет хорошего способа совместить проверку jQuery и проверку asp.net, поэтому мне нужен способ сделать это через ASP.NET.

Я НЕ использую встроенную структуру членства.

Вот часть моей формы дело с электронной почтой

<%--email and confirm email--%> 
          <tr> 

           <td> 
            <ajaxToolkit:TextBoxWatermarkExtender ID="WatermarkEmail" runat="server" TargetControlID="Email" WatermarkText="Email" WatermarkCssClass="watermarked roundedcorner" /> 
            <asp:TextBox ID="Email" runat="server" Columns="48" CssClass="roundedcorner"></asp:TextBox> 
            <asp:RequiredFieldValidator ID="EmailRequired" runat="server" ControlToValidate="Email" ErrorMessage="E-mail is required." ToolTip="E-mail is required." ValidationGroup="UserInformation"><font color="red">*</font></asp:RequiredFieldValidator> 
            <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ForeColor="Red" ControlToValidate="Email" ValidationGroup="UserInformation" ErrorMessage="Invalid Email Format"></asp:RegularExpressionValidator> 
           </td> 
          </tr> 
          <tr> 
           <td> 
            <ajaxToolkit:TextBoxWatermarkExtender ID="WatermarkConfirmEmail" runat="server" TargetControlID="ConfirmEmail" WatermarkText="Confirm Email" WatermarkCssClass="watermarked roundedcorner" /> 
            <asp:TextBox ID="ConfirmEmail" runat="server" Columns="48" CssClass="roundedcorner"></asp:TextBox> 
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="ConfirmEmail" ErrorMessage="Confirm E-mail is required." ToolTip="Confirm E-mail is required." ValidationGroup="UserInformation"><font color="red">*</font></asp:RequiredFieldValidator> 
            <asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ForeColor="red" ControlToValidate="ConfirmEmail" ValidationGroup="UserInformation" ErrorMessage="Invalid Email Format"></asp:RegularExpressionValidator> 

           </td> 
          </tr> 

есть ли способ я могу реализовать <asp:CustomValidator /> в области электронной почты, которая будет обеспечивать функциональность, которую я описал? Или это будет немного сложнее ....

ответ

1

Просто выполните http POST с данным электронным письмом и любыми другими регистрационными данными, которые есть у пользователя. На заднем конце вы можете сделать;

SELECT 
    COUNT(1) 
FROM MyDb.dbo.Members 
where email = 'email that was passed by front end' 

В результате этого запроса всегда должен быть 1 или 0. Если это 1 вы возвращаетесь сообщение об ошибке и показать его пользователю, если это 0 вставить данные и вернуть успех. Если оно больше 1, то у вас есть что-то другое, кроме вашего кода, вставляемое дублирование ИЛИ код, который вы написали, неверен :)

1

Сделать поле EMail в таблице базы данных уникальным. Когда вы пытаетесь вставить, он обычно генерирует уникальную ошибку ограничения. Проверьте на эту ошибку код и покажите подтверждение.

0

Эта проверка может быть выполнена с использованием jquery и Web Methods. Используйте jquery, чтобы связать событие onblur в текстовом поле, чтобы сделать вызов AJAX веб-методу в файле, находящемся за кодом. Веб-метод является статическим методом, который должен вызывать метод уровня данных, который проверяет, существует ли идентификатор электронной почты в базе данных. В зависимости от возвращаемого значения вы можете отображать соответствующие сообщения пользователю.

Вы можете узнать больше о веб-методах ASP.NET here

Смежные вопросы