2009-10-07 7 views
9

Html.ValidationSummary() aún se está representando aunque el estado del modelo sea válido.ASP.Net MVC: renderizar Html.ValidationSummary solo si hay errores

Este ejemplo no funciona:

<% if (!this.ViewData.ModelState.IsValid) 
{ %> 
<%= Html.ValidationSummary()%> 
<% } %> 

Todavía hay una etiqueta vacía 'ul' que se queden. ¿Cómo puedo hacer que muestre solo si el ModelState no es válido?

EDITAR resulta que el ModelState es realmente válida, pero mi código no añade ningún mensaje de error, es sólo válido para ninguna razón obvia.

[AcceptVerbs("POST")] 
public ActionResult Login(string username, string password, bool? remember) 
    { 
     if (string.IsNullOrEmpty(username)) 
     { 
      ModelState.AddModelError("Username", "Username is required"); 
     } 
     if (string.IsNullOrEmpty(password)) 
     { 
      ModelState.AddModelError("Password", "Password is required"); 
     } 

     if (ModelState.IsValid) 
     { 
      ; // this point is never reached 
     } 

     return View(); 
    } 

Respuesta

6

Si la información que proporciona es correcta, entonces this.ViewData.ModelState.IsValid es definitivamente falso. Debe haber otro código aquí que no proporcione.

2

El source code dice que cuando el estado del modelo es válido, el ayudante devuelve una cadena nula. Sospecho que el estado de su modelo es realmente inválido, pero que no se ha agregado ningún mensaje. O bien, podría ser que el marcado realmente provenga de otra cosa en su página, tal vez incluso se haya agregado con javascript.

1

Compruebe ClientValidationEnabled y UnobtrusiveJavaScriptEnabled en la configuración de la aplicación. Si apagas estas funciones si no están en uso, puedes solucionar este problema.

Cuestiones relacionadas