在ASP页面中未触发验证错误消息时隐藏不必要的空间

dev*_*van 18 html css asp.net requiredfieldvalidator

我想使用ASP必需的字段验证来验证ASP.NET页面中的一些文本框.我想在页面顶部显示该错误消息.

<table>
    <tr><td colspan='2'><b> User Input</b><br/></td></tr>
    <tr><td colspan='2'>
            <%--input validations--%>
            <asp:RegularExpressionValidator ID="regexpName1" runat="server"     
                ErrorMessage="This expression does not validate." 
                ControlToValidate="TextBox_adTitle"     
                ValidationExpression="^[a-zA-Z'.\s]{1,40}$" />
            <br />
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                ControlToValidate="TextBox_1" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
        <br />
        </td>
    </tr>
    <tr><td>
        <asp:Label ID="Label_name" runat="server" Text="Seller Name * "></asp:Label>
        </td>
        <td>
             <asp:TextBox ID="TextBox_1" runat="server" ReadOnly="True" ></asp:TextBox>        
        </td>
    </tr>

...
Run Code Online (Sandbox Code Playgroud)

这工作正常.但是,第一个表行保持其空间,甚至错误消息不显示在其上.这会导致UI在页面上看起来很糟糕,因为页面加载时会有不必要的空间.

如何在页面加载时以及没有验证错误时隐藏第一行的空间(验证的错误消息行)?

Joh*_*y_D 48

你需要设置

Display="Dynamic"
Run Code Online (Sandbox Code Playgroud)

属性到您的验证器,这将导致理想的行为.

  • 这仍然会呈现一个空行,因此它可能无法完全解决问题。 (2认同)

小智 5

在字段验证器中添加以下属性:

display="dynamic"
Run Code Online (Sandbox Code Playgroud)


dev*_*van 2

我找到了解决这个问题的好方法。

将您的验证放入面板中,并使它们显示为“无”。

  <asp:Panel ID="Panel1" runat="server" >
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
            ErrorMessage="RequiredFieldValidator1" ControlToValidate="TextBox1" Display="None"></asp:RequiredFieldValidator><br />
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
            ErrorMessage="RequiredFieldValidator2" ControlToValidate="TextBox2" Display="None"></asp:RequiredFieldValidator><br />
</asp:Panel>
Run Code Online (Sandbox Code Playgroud)

在 ASP 页面顶部添加验证摘要。

<table>
        <tr>
        <td> <asp:ValidationSummary id="summery1" runat="server"/></td>
        </tr>
    ....
Run Code Online (Sandbox Code Playgroud)

验证摘要仅在页面中获取所需的空间。