【问题标题】:ASPX validation controllers not displaying messagesASPX 验证控制器不显示消息
【发布时间】:2017-07-31 11:22:17
【问题描述】:

这就是我所拥有的

protected void submitEmail_Click(object sender, EventArgs e)
{
    try
    {
        if (!Page.IsValid)
        {
            validationMsg.Visible = true;
            validationMsg.Text = "Please insert a valid email address.";
            return;
        }

        if (!IsValidEmail())
        {
            validationMsg.Visible = true;
            validationMsg.Text = "Please insert a valid email address.";
            return;
        }

        SaveData();
        validationMsg.Visible = true;
        validationMsg.Text = "Thank you for joining our beta community! We’ll send word as soon as our beta is out.";
    }
    catch (Exception ex)
    {

    }
}

还有一个.aspx

<%@ Control Language="C#"
            AutoEventWireup="true"
            CodeFile="BetaEmailUserForm.ascx.cs"
            Inherits="CMSWebParts_BullGuard_User_Forms_BetaEmailUserForm" %>

<div class="subscribe">
    <asp:TextBox ID="userEmail" runat="server"
                 CssClass="subscribe-input"></asp:TextBox>

    <asp:LinkButton ID="submitEmail" runat="server"
                    OnClick="submitEmail_Click"
                    CssClass="subscribe-submit button"
                    CausesValidation="true"
                    ValidationGroup="betaEmailGroup">
        <span style="font-size: 20px; color: #ffffff;padding: 26px;display:block;">✓</span>
    </asp:LinkButton>
</div>

<p class="thank">
     <asp:Literal ID="validationMsg" 
                  runat="server" 
                  Visible="false"></asp:Literal>
    <asp:RequiredFieldValidator ID="rfvEmail1new"
                                ControlToValidate="userEmail"
                                SetFocusOnError="true"
                                EnableClientScript="true"
                                ValidationGroup="betaEmailGroup"
                                runat="server"></asp:RequiredFieldValidator>   
    <asp:RegularExpressionValidator ID="revEmail1new"
                                    ControlToValidate="userEmail"
                                    ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
                                    SetFocusOnError="true"
                                    EnableClientScript="true"
                                    ValidationGroup="betaEmailGroup"
                                    runat="server"></asp:RegularExpressionValidator>
</p>

我想要的是这个。

案例 1:我在输入字段中没有输入任何内容,第一个验证器执行操作,在 .cs 文件中我假设第一个条件应该失败,从而添加消息

案例 2:我输入了一个无效的电子邮件地址 => 与案例 1 相同的逻辑

案例 3:输入一个好的电子邮件地址跳过 2 次检查

案例 4:输入一个已经注册的电子邮件地址 ==> 进入第二个检查条件。

问题是我没有收到为 2 个验证器显示的消息。

第一种情况我没有输入任何我想在以下情况下使用的数据

 if (!Page.IsValid)

它不会发生。

失败的第二种情况是电子邮件地址不正确(例如 asdasd@dadad)

也应该与页面无效的情况一起使用

if (!Page.IsValid)

我尝试调试但无法调试第一个和第二个测试用例。 只有输入有效的电子邮件地址才能调试。

有什么帮助吗?谢谢。

我在想,在我不知情的情况下,aspx 控制器会在后面为我做一些客户端验证,一些 js 生成的文件?不知道

【问题讨论】:

    标签: c# asp.net aspx-user-control


    【解决方案1】:

    我希望问题出在“!Page.IsValid”上。 看看下面的链接

    https://msdn.microsoft.com/en-us/library/system.web.ui.page.isvalid(v=vs.110).aspx

    How does Page.IsValid work?

    有时需要在验证标签中添加“ErrorMessage=""”。也请检查一下。

    我希望这会对你有所帮助。

    还有其他内置的简单方法可以完成这项工作,您可以关注它们。

    【讨论】: