【发布时间】:2011-06-14 07:22:23
【问题描述】:
我的要求是,如果用户在 asp.net 文本框中输入电子邮件,它应该从数据库中验证,无论此电子邮件是否存在,并且应该停止提交表单,是否有任何内置功能或者我必须自己制作?
谢谢 阿提夫
【问题讨论】:
我的要求是,如果用户在 asp.net 文本框中输入电子邮件,它应该从数据库中验证,无论此电子邮件是否存在,并且应该停止提交表单,是否有任何内置功能或者我必须自己制作?
谢谢 阿提夫
【问题讨论】:
你必须自己做。您可以按如下方式使用 AJAX:
<asp:TextBox ID="txtEmail" runat="server" MaxLength="50"
AutoPostBack="true" OnTextChanged="txtEmail_Changed"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfv" runat="Server"
ErrorMessage="*" ControlToValidate="txtEmail" Display="Dynamic" SetFocusOnError="True"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator6" runat="server" ControlToValidate="txtEmail"
CssClass="ValidationError" Display="Dynamic" ErrorMessage="Invalid Email"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" SetFocusOnError="True"></asp:RegularExpressionValidator>
<asp:UpdatePanel ID="upMessage" runat="Server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtEmail" EventName="TextChanged" />
</Triggers>
<ContentTemplate>
<asp:Label ID="lbl" runat="server" Text=""></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
protected void txtEmail_Changed(object sender, EventArgs e)
{
// Write your code to check from DB
}
【讨论】:
我通常这样做:
SqlConnection myConnection1 = new SqlConnection("Data Source=server;Initial Catalog=stuff Integrated Security=True"
SqlCommand myCommand1 = new SqlCommand("SELECT [email] FROM [dbo].[dbo].[dbo];", myConnection1);
SqlDataReader reader = myCommand1.ExecuteReader();
if (reader.HasRows)
{
}
【讨论】:
据我所知,没有这样的事情(此外,应该在哪里检查电子邮件的唯一性?在数据库中?Active Directory 域?)
您必须定义自己的验证器控件,继承自 BaseValidator 类。
【讨论】: