Comment ajoutez-vous des balises @html en utilisant javascript?

Il est parfois nécessaire d’append une autre textbox ou un autre type de saisie pour obtenir des informations supplémentaires. Ok, disons, un Customer peut avoir plusieurs Address . Lorsque l’utilisateur remplit le formulaire et atteint l’adresse, il peut appuyer sur le signe plus pour append une autre zone de texte à une autre adresse. Donc, ce que j’ai fait ressemble à ceci: (je ne sais pas si c’est recommandé ou non)

Html:

 Additional Address 

JS:

  $(function() { var i = 0; var addAddress = function() { var strBuilder = ''; $('.address-container').append(strBuilder); i++; return false; }; $('.add-address').click(addAddress); });  

Donc ma question est:

  1. Il est possible d’append la zone de texte comme ceci @Html.EditorFor() ?
  2. Ce serait vraiment bien si je pouvais aussi append dans le @Html.ValidationMessageFor() , est-ce possible?

J’utilise ASP.NET MVC 4; Première approche du code EF.

Toute aide serait très appréciée. Merci.

Il suffit d’utiliser i pour l’atsortingbut name.

 name="Addresses[' + i + '].Location" 

Cela devrait être lié à votre modèle.

  var i = 0; var addAddress = function() { var strBuilder = ''; $('.address-container').append(strBuilder); i++; return false; }; 

Voir ce post qui m’a beaucoup été utile.

Mis à jour

pour la validation, ajoutez simplement ces atsortingbuts avec l’élément input.

 data-val-email="The Email field is not a valid e-mail address." data-val="true" 

Une idée derrière ceci est que, en ajoutant l’élément correct avec l’atsortingbut name et la validation (data-val = “true”). Vous pouvez voir le rendu HTML pour les pages déjà fonctionnelles sur lesquelles vous avez utilisé la validation.

Non, le razor fonctionne côté serveur. Une fois que vous êtes sur le client, vous n’avez pas access à @Html . Cet article montre comment modéliser les liens avec des listes, même s’il semble que vous l’ayez déjà compris avec votre iterator.

En général, je demanderai au razor de produire une Address[0] fictive Address[0] , puis de copier le code HTML généré dans le code javascript à générer. Il doit conserver tous les atsortingbuts de validation côté client que jQuery recherche.

Il est possible d’utiliser des balises générées par Razor côté client. Créez un fichier de modèle EditorFor utilisant la syntaxe {...} pour les propriétés dynamics. Alors utilisez-le comme ça.

  

Vous n’êtes pas en mesure d’append des assistants HTML côté client. Vous pouvez toutefois append de simples contrôles HTML à l’aide de jquery de différentes manières. Vous pouvez utiliser la fonction d’ajout comme ci-dessus ou la fonction html.

Votre validation devra également être traitée côté client.

Toutefois, il est conseillé de créer un modèle de vue partielle des champs de texte d’adresse, puis d’utiliser Knockout pour append un nouveau modèle chaque fois que l’utilisateur clique sur append une nouvelle adresse. Vous pouvez ensuite gérer facilement la validation car votre modèle de vue sera lié à votre modèle MVC.