24

我想使用 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>

...

这工作正常。但是,即使没有显示错误消息,表格的第一行也会保留其空间。这将导致 UI 在页面上看起来很糟糕,因为页面加载时存在不必要的空间。

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

4

6 回答 6

58

你需要设置

Display="Dynamic"

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

于 2012-05-12T11:22:39.677 回答
5

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

display="dynamic"
于 2018-04-05T19:33:57.383 回答
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>

并在您的 ASP 页面顶部添加一个验证摘要。

<table>
        <tr>
        <td> <asp:ValidationSummary id="summery1" runat="server"/></td>
        </tr>
    ....

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

于 2012-05-16T08:10:56.077 回答
1

只需添加属性。

显示="动态"

在您的验证器中,示例如下。

<asp:RequiredFieldValidator ID="rfvEmail" runat="server" Display="Dynamic" ForeColor="Red" ErrorMessage="Please enter Email" ControlToValidate="txtEmail" ValidationGroup="addManufacture"></asp:RequiredFieldValidator>
于 2016-03-03T07:25:01.307 回答
0

简单的解决方案。将此添加到验证器:

CssClass="AT3RValidator"

.AT3RValidator {
    display:none;
}

并设置为 display="Dynamic",但这仍然会呈现空白空间,因为这会将可见性:隐藏样式设置为生成的验证器跨度,这与 display:none 不同,它会呈现不需要的空白空间。

于 2015-05-18T11:07:18.637 回答
-1

要隐藏验证器,请执行此操作

<tr>
    <td>TEXT</td>
</tr>
<tr>
    <td>INPUT
    <br/>
    <asp:validator....></>
    </td>
</tr>

或者

<tr>
    <td>TEXT</td>
</tr>
<tr>
    <td>INPUT
    <div>
        <asp:validator....></>
    </div>
    </td>
</tr>
于 2013-12-08T09:57:49.437 回答