Ici la propriété dans mon viewModel: et à mon avis: p> et il rend " p> < Pré> xxx pré> doit-il régler l'attribut maxlength sur ma zone de texte? Sinon, comment puis-je faire cela avec des dataattributes? P> p>
3 Réponses :
J'aimerais que l'attribut que j'ai défini dans la fenêtre de vue pour contrôler cela si possible. em> p>
ASP.NET MVC fournit un système extensible pour faire exactement cela. Voici ce que vous devez faire: p>
- Implémentez un
ModelmetadataProvider code>. Li>
- Recherchez le
StringLengthateTtribute code> ou le
maxlengthateTtribute code>, extrayez les informations et ajoutez-le au
Modelmetadata code>. Li>.
- Fournissez un modèle d'éditeur personnalisé qui utilise les informations. LI> ol>
Étape 1: strong> Implémentez un ModelmetaDataProvider Code>. P>
Créer une classe qui dérive à partir de
ModelmetaDataProvider code> . Généralement, vous découlez du
dataannotationsModelmetaDataProvider code> car cela fournit une fonctionnalité par défaut, ce qui signifie que vous devez seulement remplacer une seule méthode appelée
CreateMetaData code>. P>
Étape 2: strong> extraire les informations: p>
Pour obtenir les informations, vous devez rechercher l'attribut, extraire les informations de longueur maximale et l'ajouter au dictionnaire
supplémentaire code> Dictionnaire du
modelmettadata code>. La mise en œuvre ressemblerait à ceci (c'est la mise en œuvre entière): p>
xxx pré> Pour obtenir ASP.NET MVC d'utiliser ceci, vous devez l'enregistrer dans le
Application_start code> méthode dans
global.asax code>. P>
xxx pré>
Étape 3: strong> Créez un modèle d'éditeur personnalisé. Vous devez maintenant créer une vue qui utilise les informations. Créez une nouvelle vue appelée
String code> dans le dossier
Vues \ code>. P>
string.cshtml strong> p> xxx pré> Lorsque vous exécutez votre application, vous obtiendrez la sortie HTML suivante en appelant
@ html.editorfor code>. p>
<input class="text-box single-line" id="Extension" maxlength="6" name="Extension" type="text" value="" />
Benjamin, vous êtes une machine aujourd'hui!
Pas de problème, heureux d'avoir pu aider.
J'ai couru dans quelque chose de similaire, voici ma solution rapide et sale:
En haut de votre fichier .cshtml Ajoutez la ligne: P>
<script> $(function () { var max = $("#myinput").attr("data-val-length-max"); $("#myinput").attr("maxlength", max); }); </script>
Ce code fonctionne, mais vous voudrez peut-être garder votre rasoir Vues Nettoyant en utilisant quelque chose comme une aide. Voir ma réponse pour un exemple de cela.
Essentiellement basé sur la réponse de Brad, enveloppé dans une extension de l'aide HTML à l'aide de la syntaxe de Lambda afin de ne pas polluer vos vues de rasoir avec des trucs de réflexion:
@using HtmlHelper
Avez-vous vérifié si vous pouvez poster une chaîne de plus de 6 caractères?
Je reçois une erreur de validation, mais je veux qu'il définisse réellement l'attribut maxlength.
Si vous le modifiez à
TEXTBOXUR CODE> Vous pouvez transmettre des options HTML.
Oui, mais j'aimerais que l'attribut que j'ai défini dans la fenêtre de vie puisse contrôler cela si possible.
Si vous utilisez
Validation non obstrisseuse Code> Ceci POST pourrait être utile