2015-07-21 1 views
2

J'ai un formulaire avec une zone de texte et un bouton de soumission, lorsque l'utilisateur ajoute une valeur à la zone de texte et soumet, il met à jour un fichier XML utilisé pour stocker une simple configuration.Validation d'une zone de texte sans modèle

@using (Html.BeginForm("SetThreshold", "Config", FormMethod.Post)) 
{ 
    <p>Current Email Threshold @Html.Raw(threshold)</p> 

    @Html.TextBox("emailThreshold", null, new { @class = "numericTextBox" }) 

    <input type="submit" value="Update" /> 
} 

Comme je ne suis pas à l'aide d'un modèle, je ne peux pas utiliser les annotations de données pour vous assurer que les entrées de l'utilisateur quelque chose qui est numérique avant d'essayer de se soumettre.

Je ne veux pas vraiment devoir afficher un peu de texte d'avertissement, puis l'afficher/masquer en fonction de l'état du formulaire en cliquant sur le bouton Soumettre. Quelle est la manière la plus simple et la plus simple de valider le côté client de la zone de texte tout en conservant toutes les autres validations JQUERY que j'ai utilisées sur mes vues basées sur un modèle, et en ajoutant plus tard quand j'ai plus de texte boîtes qui peuvent être mises à jour sur cette page.

+0

Pourquoi n'utilisez-vous pas simplement un modèle de vue? - (validation de type fort, validation côté client et serveur sortie de la boîte et moins de code) –

+0

@StephenMuecke Je l'ai refacturé maintenant pour ce faire, je ne sais pas vraiment pourquoi je l'évitais, je vais marquer la réponse ci-dessous comme la réponse comme cela a fait ce que je voulais à l'origine – JsonStatham

Répondre

2

La bibliothèque de validation standard jQuery vous permet de décorer vos entrées avec des attributs et elles sont automatiquement validées lors de la soumission du formulaire. Par exemple, si vous rendez votre zone de texte avec l'attribut required, cela fonctionnera. Cependant, il effectuera seulement la validation client-side; L'utilisation des attributs de validation dans vos modèles C# permet également les validations server-side.

Donc, quelque chose comme ça fonctionnerait:

@Html.TextBox("emailThreshold", null, new { required = "required" }) 

Si vous avez besoin de connaître tous les attributs de validation, un coup d'oeil dans le plug-in page d'accueil validation jquery.

Pour être honnête, il existe d'autres alternatives, par exemple, vous pouvez créer un classeur de modèle personnalisé et remplacer le fournisseur de validation. Mais je pense que ce serait quelque chose comme réinventer la roue ... trop d'effort ...

Edit:

Permettez-moi de partager cette belle après liées à la validation personnalisée:

http://johnnycode.com/2014/03/27/using-jquery-validate-plugin-html5-data-attribute-rules/

+0

Cela valide la zone de texte mais c'est le rendu comme une info-bulle quand je clique sur submit, est-ce que je fais ça comme le reste de ma validation qui est juste un texte rouge standard. – JsonStatham

+0

Oui, et c'est simple. Ma suggestion est d'inspecter le code HTML de ces contrôles (avec votre validation) et de vérifier les propriétés que vous devez définir/remplir. – gustavodidomenico

+0

La zone de texte affiche la forme suivante: JsonStatham