2012-05-12 17 views
12

Quiero validar algunos cuadros de texto en mi página ASP.NET usando la validación de campo requerida por ASP. Y quiero mostrar ese mensaje de error en la parte superior de la página.Ocultar espacio innecesario cuando los mensajes de error de validación no se activan en la página ASP

<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> 

... 

Esto está funcionando bien. Sin embargo, la primera fila de la tabla conserva su espacio, incluso los mensajes de error no se muestran en ella. Esto hará que la interfaz de usuario se vea mal en la página, ya que hay espacio innecesario cuando se carga la página.

¿Cómo puedo ocultar el espacio de la primera fila (fila de mensajes de error de validación) mientras se carga la página y cuando no hay un error de validación?

Respuesta

2

Encontré una buena manera de resolver esto.

Ponga su validación dentro de un panel, y haga que se muestren como "ninguno".

<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> 

Y la parte superior de la página ASP Añadir un resumen de validación.

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

El resumen de validación solo requiere espacio en Página.

43

Es necesario configurar

Display="Dynamic" 

propiedad a su validador, esto hará que el comportamiento deseable.

+1

Esto todavía representará una fila vacía, por lo que puede no resolver completamente el problema. – Filburt

+0

Lo tengo, por lo que desea ocultar completamente el elemento tr, piense que debe usar el script JS para personalizarlo. Por ejemplo, agregue el evento de cambio al mensaje de validación, una vez que haya cambiado css y se muestre cambie css por el primero y haga que sea visible también. –

+0

[Cambiar el estilo de un control basado en la validación (ASP.NET)] (http://stackoverflow.com/a/1405177/205233) puede tener una solución. – Filburt

-1

Para ocultar validadores hacen esto

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

O

<tr> 
    <td>TEXT</td> 
</tr> 
<tr> 
    <td>INPUT 
    <div> 
     <asp:validator....></> 
    </div> 
    </td> 
</tr> 
0

solución simple. Agregue esto a validador:

CssClass="AT3RValidator" 

.AT3RValidator { 
    display:none; 
} 

Y configurado para mostrar = "dinámico", pero que todavía rendirá espacio vacío debido a que establece la visibilidad: oculto estilo a palmo validador generado, que es diferente del display: none, que presta espacio vacío no deseado.

+0

¿Qué pasará cuando el error de validación * debería * aparecer, entonces?Parece que lo ocultará independientemente de si se debe mostrar o no. – TylerH

+0

cuando se muestra un error El estilo en línea se establece en el elemento directamente, por lo que reemplaza mi clase. pero mi clase no es realmente necesaria porque display = "Dynamic" establece display: none already. –

1

Solo agregue la propiedad.

Display = "dinámica"

dentro de su Validador, Ejemplo dan a continuación.

<asp:RequiredFieldValidator ID="rfvEmail" runat="server" Display="Dynamic" ForeColor="Red" ErrorMessage="Please enter Email" ControlToValidate="txtEmail" ValidationGroup="addManufacture"></asp:RequiredFieldValidator> 
+1

Este es un duplicado de la respuesta [# 1] (http://stackoverflow.com/a/10563265/2415524). – mbomb007

+0

Recuerda por qué las respuestas con mayor número de votos permanecen en el bot de la página y no se muestran primero. –

Cuestiones relacionadas