2012-01-13 33 views
6

Estoy usando MVC3 con Razor. Para la entrada Tengo dos tipos de control:@ Html.TextBoxFor textbox no se resalta después de la validación fallida

  1. @Html.TextBoxFor
  2. @Html.TextAreaFor

de validación de campos Ambos han requerido. @Html.TextAreaFor resalte el cuadro si la validación falla donde @Html.TextBoxFor no.

Aquí está mi código

HTML:

@Html.TextBoxFor(m => m.FirstName) 

Modelo:

[Required(ErrorMessage = "First Name is required")] 
public string FirstName { get; set; } 

¿Por qué es el cuadro de texto creado usando @Html.TextBoxFor no hightlighted cuando su validación falla?

+0

@ Html.TextBoxFor – user1148365

+1

¿No es la validación o no * resaltando *? Si no está resaltando, es probable que sea un problema de CSS. –

+0

Valida pero no resalta. CSS? donde debería mirar? No estoy seguro, solo otros dos - DropDownListFor y TextAreaFor están mostrando los cuadros rojos después de que la validación falla, pero no el "TextBoxFor" que yo quería. – user1148365

Respuesta

-1

Para tener una validación del lado del cliente, debe asegurarse de tener los scripts necesarios incluidos en su Vista (ya sea a través de la vista _Layout.cshtml o su vista directa). Poner esto en la parte superior de la vista:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

Asegúrese de que la ruta de acceso y los nombres de script son correctos. Esto le permitirá utilizar la validación del lado del cliente (es decir, resaltar el cuadro de texto).

+0

Los tengo en mi _Layout.cshtml en la parte superior. También probé poniendo en mi punto de vista. Sin suerte. – user1148365

+0

no es necesario. – UMAR

7

Asegúrate de que las variables que estás asignando a estos campos de entrada son [Obligatorio] en tu clase de modelo ... También eliminaste cualquier CSS en un proceso de "limpieza"? Intenta agregar esto si no está ahí.

.field-validation-error 
{ 
color: #ff0000; 
} 
.field-validation-valid 
{ 
display: none; 
} 
.input-validation-error 
{ 
border: 1px solid #ff0000; 
background-color: #ffeeee; 
} 
.validation-summary-errors 
{ 
font-weight: bold; 
color: #ff0000; 
} 
.validation-summary-valid 
{ 
display: none; 
} 
1

que se enfrentaron mismo problema hoy en día:

Con el fin de aumentar la validación de cuadro de texto o cualquier otro campo que sólo tiene estas dos líneas:

En el regulador: ModelState.AddModelError("ErrorEmail", "Error Message");

En Vista: @Html.ValidationMessage("ErrorEmail")

Y en web.config

<appSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 

Estaba sobrescribiendo css de validación con mi propio sitio web css, por eso no mostraba el borde rojo alrededor del cuadro de texto.

haciendo estilo de error de validación importante resuelto mi problema:

input.input-validation-error { 
    border: 1px solid #e80c4d !important; 
} 
+0

My validation.css estaba siendo reemplazado por bootstrap. ! importante solucionó el problema. – ADH

0

añadir tanto .input validación de errores y clases .input.input validación de errores.

3

Tuve este problema yo mismo. Agregué una nueva clase de CSS al archivo Site.css (o la hoja de estilos que prefiera).

textarea.input-validation-error { 
border: 1px solid #e80c4d; 
} 
0

Sé que esto es viejo, pero en caso de cualquier otra persona está en busca de esto, asegúrese de que también usa

@Html.ValidationMessageFor(m => m.FirstName) 

Después de que su cuadro de texto

Cuestiones relacionadas