Ok, je suis très nouveau à MVC alors portez-moi si je pose une question ridiculement simple. J'essaye de développer un projet dans MVC où certains contrôles sur la vue garderont l'état mais ne font pas réellement partie du modèle. Je souhaite afficher les graphiques Asp.net et les grilles xslt sur une page en fonction du contenu de diverses listes déroulantes. Les données pour ceux-ci viendraient du modèle mais le menu déroulant serait constant et ainsi quand vous faites un post sur vos choix donnés il enregistre les sélections de liste déroulante et les affiche comme il le ferait sur une publication dans Asp.net 2.0?Garder l'état dans les contrôles non-modèle - MVC
Répondre
Si votre utilisation des aides langage HTML standard, il peut être assez compliqué que vous devrez construire votre propre SelectListItem classe pour passer dans la vue et dire le contrôle que l'on est sélectionné et de la pop dans un ViewData:
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem
{
Text = "Option1",
Value = "1",
Selected = (Request["dropdown"] == "Option1")
});
items.Add(new SelectListItem
{
Text = "Option2",
Value = "2",
Selected = (Request["dropdown"] == "Option2")
});
items.Add(new SelectListItem
{
Text = "Option3",
Value = "3",
Selected = (Request["dropdown"] == "Option3")
});
ViewData["items"];
Vous pouvez rendre dans votre vue comme suit:
<%= Html.DropdownList("Dropdown1", (IEnumerable<SelectListItem>)ViewData["items"])
une façon que j'ai été résoudre ce dans le passé a fait une demande de paiement ajax sur l'événement de changement dropdownlist (sérialisation le formulaire avec la liste déroulante valeurs sélectionnées ou simplement passer les paramètres dans la chaîne de requête). Le serveur (actions du contrôleur) accepte cette demande et renvoie une vue partielle avec le contenu. Le client accepte ce contenu et place (remplace) dans certains div.
De cette façon, je n'ai jamais eu à penser à l'élément sélectionné de la liste déroulante, car je ne recharge jamais toute la page.
Merci, c'est exactement ce que je cherchais :) – Israfel
Merci, ma première réponse acceptée! :) Content de pouvoir aider! –