Pregunta

Estoy usando xval a utilizar la validación del lado del cliente en mi asp.net MVC2 aplicación web. A pesar de los errores se dan cuando entro texto en un campo numérico, todavía intenta publicar el formulario a la base de datos. Los valores incorrectos están siendo sustituidos por 0 y se guardan en la base de datos. Pero en cambio, ni siquiera debería ser posible para tratar de enviar el formulario. Alguien me puede ayudar aquí?

He configurado los atributos de la siguiente manera:

[Property]
[ShowColumnInCrud(true, label = "FromPriceInCents")]
[Required]
//[Range(1, Int32.MaxValue)]
public virtual Int32 FromPriceInCents{ get; set; }

El controlador de captura de las miradas solicitar a continuación; Estoy recibiendo ningún error en esta parte.

[AcceptVerbs(HttpVerbs.Post)]
[Transaction]
[ValidateInput(false)]
public override ActionResult Create()
{
  //some foo happens
}

Mi vista se ve como a continuación:

<div class="label"><label for="Price">FromPrice</label></div>
<div class="field">
<%= Html.TextBox("FromPriceInCents")%>
<%= Html.ValidationMessage("product.FromPriceInCents")%></div>

Y al final de la vista tengo la siguiente regla que en el código HTML genera las reglas de validación correctas

<%= Html.ClientSideValidation<Product>("Product") %>

Espero que alguien pueda me ayuda con este tema, gracias por adelantado!

EDITAR: 19 de de abril de Me acabo de enterar que hay un botón normal con que se utiliza en lugar de un input type = "botón" Podría ser este el problema?

<button class="save" type="submit" name="save"><span>Opslaan</span></button>

Otros consejos

Mi primera y principal preocupación en este caso sería: ¿por qué es el ahorro de su aplicación los valores en la base de datos en el primer lugar? Mientras XVal es una manera buena para hacer que el usuario de la aplicación amigable, que todavía tiene que hacer la validación del lado del servidor. Si usted no verifica sus datos en el servidor - que tiene un agujero de seguridad masive! Intente comprobar si el ModelState.IsValid en su controlador antes de guardar los valores.

Ahora, por lo que veo que está registrando la validación XVal utilizando

<%= Html.ClientSideValidation<Product>("Product") %>

La forma en que funciona es que permite la validación del lado del cliente para todos los controles con el prefijo "Producto". Su cuadro de texto en el otro lado tiene un id de FromPriceInCents

Así que la solución a este problema sería la de hacer esto:

<%= Html.TextBox("FromPriceInCents")%>
<%= Html.ValidationMessage("FromPriceInCents")%>

<%= Html.ClientSideValidation<Product>() %>

UPD3 He actualizado el puesto. Fija el código para que no se utiliza el prefijo.

Además, he compilado una solución de trabajo que contiene una solución de trabajo. Lista, editar, crear la página, cuerda y propiedades int, y la validación XVal.

public class Product
{
    [ScaffoldColumn(false)]
    public int Id { get; set; }

    [Required]
    [Range(1,50)]
    public int PriceInCents { get; set; }

    [Required]
    [StringLength(50)]
    public string Name { get; set; }
}

y en la vista

<%= Html.TextBoxFor(model => model.PriceInCents) %>
<%= Html.ValidationMessageFor(model => model.PriceInCents) %>

Aquí está el enlace de descarga .. Compruébelo usted mismo y dime si funciona http://www.flexlabs.org/download/xValTest

¿Por qué tiene el atributo de rango comentado? Con las propiedades que ha especificado el tiempo que nada se introduce en el cuadro de texto debe pasar la validación del lado del cliente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top