2009-03-16 18 views
8

Estoy tratando de validar un formulario básico, ¿no puedo usar los controles de validación estándar? En todas partes que estoy buscando parece tratar de usar algo como el siguienteASP.NET MVC RC2: ¿Por qué no puedo usar las opciones de validación normales? p.ej. RequiredFieldValidator

<%= Html.ValidationSummary() %> 

<% using (Html.BeginForm()) {%> 

    <fieldset class="fields"> 
     <legend>Create New Contact</legend> 
     <p> 
      <label for="task">Task Name:</label> 
      <%= Html.TextBox("task") %> 
      <%= Html.ValidationMessage("task", "*") %> 
     </p> 
     <p class="submit"> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 

<% } %> 

Pensé que era capaz de utilizar los componentes estándar? ¡Cualquier apuntador sería genial!

Respuesta

9

ASP.NET MVC utiliza una filosofía bastante diferente a ASP.NET normal; como tal, con unas pocas excepciones menores, casi ningún control ASP.NET (etc.) funcionará en ASP.NET MVC. Aparte de cualquier otra cosa, el punto en el ciclo de vida de la página donde generalmente hacen algo simplemente no existe.

Hay maneras de hacer esto, por ejemplo, en jQuery validation plug-in, o mediante el uso de IDataErrorInfo, etc.

Tenga en cuenta que si lo hace la validación en el cliente aún tiene que hacerlo (por separado) en el servidor. Esos navegadores molestos no se pueden confiar ;-p

+0

me alegro de que sea solo del lado del servidor por ahora, pero esas son las opciones de Html.ValidationMessage para entonces, ¿no es esa la respuesta de MVC a los componentes estándar? – Andrew

+0

No lo sé, me temo. Sé que Scott Gu menciona algunas de las cosas de validación incorporadas en su blog: http://weblogs.asp.net/scottgu/archive/2009/01/27/asp-net-mvc-1-0-release-candidate-now -available.aspx –

3

ASP.NET MVC elimina la mayoría de los controles ASP.NET clásicos, ya que el marco no admite muchas de las cosas chifladas que estos controles requerían ser inyectados en sus páginas para que funcionen. Cosas como viewstate y oscuras funciones de javascript lanzadas de todas formas.

3

Los validadores de los que está hablando pertenecen al ámbito de los formularios web y los controles web. En ASP.NET MVC, todo lo que haces en una vista es generar HTML puro. Los Valdiators son, en esencia, los controles web de la etiqueta y necesitan viewstate que ya no están disponibles.

2

Los validadores de ASP.NET ya no funcionan, pero se han hecho algunos trabajos para simplificar la tarea. He usado, por ejemplo, xVal, que hace una tarea decente e incluso se integra con la validación de JQuery, pero le recomiendo que aprenda cómo funciona la validación antes de utilizar algo así.

Simplificando, hay una colección de errores en ViewData que contiene dos colecciones, una hace referencia a cada campo de formulario y la otra es una lista de errores asociados a ellas. Esto se rellena en enlace o manualmente y si hay algunos errores, se pueden mostrar en un resumen o al lado del campo (utilizando los helpers html para ese fin).

Los marcos pueblan la colección automáticamente y pueden traducir las reglas de validación a los scripts del lado del cliente, pero la esencia es aprender cómo funciona la validación en MVC.

0

No hay componentes que yo sepa. Vas a tener que hacer la validación a sí mismo como esto (o utilizar updatemodel etc.)

if (String.IsNullOrEmpty(username)) 
    { 
     ModelState.AddModelError("username", "You must specify a username."); 
    } 

luego regresar a su formulario de edición y los errores ModelState aparecerá en el resumen de validación.

Existen marcos de validación like xval, ¿no está seguro si eso es lo que está buscando?

Cuestiones relacionadas