2011-12-21 21 views
6

Estoy usando ASP.Net MVC 3. Tengo una entidad llamada Estudiante que tiene las propiedades Id, Name, Age, RollNo. En la página de creación de Student, he utilizado el marco de validación. Pero en la página de Búsqueda avanzada estoy usando todas las propiedades pero no quiero usar el marco de validación ya que los usuarios pueden no querer usar todos los campos para buscar.Desactivando la validación en @ Html.TextBoxFor en .Net

También me gustaría mencionar que he utilizado la anotación [Obligatorio] en la clase de modelo.

Ayúdenme a solucionar este problema.

Saludos Molay

+0

uso 'Html.TextBox' en su lugar? Perderá otras bondades que trae 'TextBoxFor', pero no son tan difíciles de codificar. – tugberk

+0

Cuando lo sientas así, debes considerar ViewModel para esta página de búsqueda o cualquier otra página personalizada. Después de todo ViewModels siempre es una mejor práctica. –

Respuesta

15

Estoy de acuerdo con xixonia, utilizar una vista de modelo separado para búsqueda, pero para responder a su pregunta que usted tiene unos pocos opciones cliente:

  1. pase en data-val = "false" como un atributo HTML, por ejemplo: @Html.TextBoxFor(x => x.Age, new { data_val = "false" });
  2. utilice @Html.TextBox() lugar
  3. crear manualmente el cuadro de texto con HTML utilizando el mismo nombre de entrada por lo que se une al modelo

I Si está haciendo una validación en el back-end (¡debería estar!), es decir, verificando ModelState.IsValid, entonces tendrá que eliminar las propiedades de validación del ModelState, así: ModelState.Remove("Age");.

+0

¡No pensé en hacer eso! :) –

+0

¡Muchas gracias! Esta funcionando. – Molay

2

No se puede eliminar el atributo en tiempo de ejecución. Tendrás que tener múltiples modelos de vista para la entidad del estudiante uno para crear y otra para la búsqueda.

+0

Mira esta pregunta SO http://stackoverflow.com/q/5367287/293712 – Maheep

2

Parece que los valores de la clase Student están restringidos (como deberían).

Consideraría utilizar un modelo de vista separado para la búsqueda, en lugar de usar un Estudiante.

public class Student 
{ 
    [ValidationAttributeOfSomeKind] 
    int Age { get; set; } 

    [ValidationAttributeOfSomeKind] 
    string Name { get; set; } 
} 

public class StudentSearch 
{ 
    int? Age { get; set; } 

    string Name { get; set; } 
} 
1

Creo que tienes que escribir tu propio ayudante de cuadro de texto. No hay forma de desactivar esto.

1

añadir este código en su formulario:

@Html.EnableClientValidation(false); 
+0

¡Este trabajo perfecto! Gracias. – Jirapong

Cuestiones relacionadas