如果regularexpressionvalidator在c#

时间:2016-03-11 22:04:51

标签: c# asp.net regex email

我有一个简报的小部件,我使用RegularExpressionValidator检查电子邮件输入是否有效。我的代码隐藏是一种打开smtp连接并发送电子邮件的方法。 我的.aspx看起来像这样:

<asp:TextBox ID="txtEmail" runat="server" CssClass="form-control newsmail"></asp:TextBox>
            <asp:RegularExpressionValidator style="position:absolute; margin-top:50px; margin-left:58px;" ID="RegularExpressionValidator1" runat="server" ErrorMessage="Invalid E-mail" ControlToValidate="txtEmail" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
<asp:Button ID="submit" runat="server" Text="Submit" CssClass="btn btn-lg btn-success submit" OnClick="submit_Click1" />    

我的代码隐藏有以下方法:

protected void submit_Click1(object sender, EventArgs e)
{ 
.... 
}

显然,就像现在一样,它会尝试发送电子邮件,无论电子邮件是否有效。因此,我正在寻找某种条件表达式,它在完成方法并发送电子邮件之前将RegEx考虑在内。

我知道可以在C#中完成所有操作,但我对C#来说还是比较新的,所以这看起来就像是最简单的解决方法。

1 个答案:

答案 0 :(得分:0)

ASP.net页面中的验证器已经可以在浏览器中用作JavaScript。当您启用此功能并且用户的浏览器启用了JavaScript时,如果输入控件中存在无效数据,则甚至不会执行submit_Click1方法。

如果禁用验证器在客户端工作或用户的浏览器未启用JavaScript,则应检查后面的代码,所有验证器都成功验证了用户输入。您可以通过检查页面的isValid属性来执行此操作:

protected void submit_Click1(object sender, EventArgs e)
{
    if(Page.IsValid)
    {
        // All Validators Passed -> Do something
    }
    else
    {
        // Some invalid data, do nothing
    }
}