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 />在电子邮件字段中实现我描述的功能?或者它必须更​​复杂一些......

4

3 回答 3

1

只需对有问题的电子邮件和用户拥有的任何其他注册信息进行 http POST。在后端你可以做;

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

该查询的结果应始终为 1 或 0。如果为 1,则返回错误消息并将其显示给用户,如果为 0,则插入数据并返回成功。如果它大于 1,那么你的代码以外的东西已经插入了欺骗或者你写的代码是错误的:)

于 2013-09-09T23:22:20.607 回答
1

使数据库表中的电子邮件字段唯一。当您尝试插入时,通常会引发唯一约束错误。检查代码中的错误并显示验证。

于 2013-09-10T10:44:57.370 回答
0

可以使用 jquery 和 Web 方法来完成此验证。使用 jquery 连接文本框的 onblur 事件,以对代码隐藏文件中的 Web 方法进行 AJAX 调用。Web 方法是一个静态方法,它应该调用一个数据层方法来检查电子邮件 ID 是否已经存在于数据库中。根据返回的值,您可以向用户显示适当的消息。

您可以在此处阅读有关 ASP.NET Web 方法的更多信息

于 2013-09-17T13:18:39.193 回答