Question

J'utilise xval pour utiliser la validation côté client dans mon asp.net MVC2 application web. En dépit des erreurs qu'il est donne quand j'entrer du texte dans un champ numérique, il essaie toujours d'afficher la forme à la base de données. Les valeurs incorrectes sont remplacées par 0 et enregistrées dans la base de données. Mais au lieu de cela ne devrait pas être même possible d'essayer de soumettre le formulaire. aider quelqu'un peut me ici?

J'ai mis les attributs comme ci-dessous:

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

Le contrôleur attrapant les regards de demande comme ci-dessous; Je reçois aucune erreur dans cette partie.

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

Mon point de vue ressemble comme ci-dessous:

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

Et à la fin de la vue que j'ai la règle suivante qui code html génère les règles de validation correctes

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

J'espère que quelqu'un peut me aide à ce problème, merci à l'avance!

EDIT: Le 19 Avril Je viens de découvrir qu'il ya un bouton normal avec utilisé à la place d'un input type = « Button » Serait-ce la question?

<button class="save" type="submit" name="save"><span>Opslaan</span></button>
Était-ce utile?

Autres conseils

Ma première et principale préoccupation ici serait la suivante: pourquoi est votre application de sauvegarder les valeurs dans la base de données en premier lieu? Alors que xVal est un bon moyen de rendre l'utilisateur d'application convivial, il vous reste à faire la validation du côté serveur. Si vous ne validez pas vos données sur le serveur - vous avez un trou de sécurité masive! Essayez de vérifier si le ModelState.IsValid dans votre contrôleur avant de sauvegarder les valeurs.

D'après ce que je vois que vous vous inscrivez la validation xVal en utilisant

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

La façon dont cela fonctionne est qu'il permet la validation du côté client pour toutes les commandes préfixées avec « produit ». Votre zone de texte d'autre part a un identifiant de FromPriceInCents

Voici donc la solution serait de faire ceci:

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

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

UPD3 Je mis à jour le poste. Correction du code de sorte que le préfixe est pas utilisé.

En outre, je compilé une solution de travail qui contient une solution de travail. Liste, Modifier, Créer une page, la chaîne et les propriétés int, et la validation 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; }
}

et sur la vue

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

Voici le lien de téléchargement .. Check it out et me dire si cela fonctionne http://www.flexlabs.org/download/xValTest

Pourquoi vous avez l'attribut Range commenté? Avec les propriétés que vous avez spécifié tant que tout est entré dans la zone de texte, il doit passer la validation côté client.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top