Comment générer dynamiquement des contrôles dans MVC?
Dans asp.net vous pouvez utiliser asp:Repeater pour générer dynamiquement des contrôles.
par exemple:
<asp:Repeater runat="server" id="rpt">
<ItemTemplate>
<asp:Textbox runat="server"/>
</ItemTemplate>
</asp:Repeater>
Ensuite, vous pouvez obtenir une boucle sur les éléments du côté du serveur:
foreach(var items in rpt.Items)
{
}
Et en MVC, vous pouvez faire quelque chose comme ceci:
@foreach(var item in model)
{
@Html.TextBoxFor(a=>item.searchCriteria);
}
Mais il y a un problème:
Je voudrais générer des zones de texte lorsque l'utilisateur clique sur ajouter plus de zone de texte bouton:
Si j'utilise foreach dans MVC, alors je ne vais pas être en mesure de récupérer la saisie de l'utilisateur sur le contrôleur, aussi, je n'ai pas de modèle à boucle à travers.
Et la finale souhaitée sortie sera:
Une fois que l'utilisateur clique sur le lien "Ajouter plus de zone de texte" bouton, une nouvelle zone de texte ajouter vers le bas, et une fois que l'utilisateur clique sur le bouton de recherche, le texte à l'intérieur de la zone de texte sera généré dans une chaîne de requête, quelque chose comme ceci:
Vue:
<input name="searchCriteria" type="text" class="form-control" />
<input name="searchCriteria" type="text" class="form-control" />
<input name="searchCriteria" type="text" class="form-control" />
<input name="searchCriteria" type="text" class="form-control" />
Contrôleur:
public ActionResult Search()
{
string queryString = Request.RawUrl;
//parse the querystring here
return View(NumberOfVisitorsReport);
}
Et la chaîne de requête générée sera de:
www.website.com/?searchCriteria=a&searchCriteria=b&searchCriteria=c
Donc il y a un autre moyen d'atteindre cet MVC?
Edit:
J'ai pris un coup d'oeil à certains post sur "Comment générer des contrôles dynamiquement en MVC"
Par exemple
Création de contrôle basé sur le modèle de la valeur dans MVC4
Il génère des contrôles basés sur la valeur dans la base de données, si j'mettre en œuvre ce à mon site web, les commandes vont perdre de la valeur sur chaque poste de retour.
- Vous pouvez utiliser JavaScript...c'est généralement la meilleure approche est utile lorsque vous voulez faire quelque chose sur le côté client.
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser jquery.
Cet article peut aider pour résoudre le problème.
Formulaire dynamique en Asp.net MVC & jquery
Vous voudrez probablement aller loin de "publication" et de regarder vers l'ajout de zones de texte de façon dynamique dans le navigateur à l'aide de jQuery ou un cadre similaire. Si vous avez le nom de la nouvelle zones de texte avec soin ou de ne le présenter comme un AJAX post d'un objet JSON, vous pouvez récolter toutes les valeurs de tous les contrôles.
Vous allez avoir à utiliser Pour la boucle l'insead de ForEach. Ensuite, utilisez la indice de Créer de nouveaux contrôles de zone de texte, de cette façon, lorsque vous soumettez le formulaire, l'indice de la nouvellement créée zone de texte sera soumis, vous pouvez même LIER à un modèle si le type de données de votre modèle est LISTE.
Exemple:
maintenant, vous connaissez la valeur/indice de "je", utilisez-le pour remplir de nouvelles commandes.