Asp.net mvc liste de sélection
J'ai besoin de créer une liste de sélection, la préservation de l'état, qui ne fait pas partie du modèle passé à la vue. Je suppose que je devrais être à l'aide d'un ViewBag pour passer d'une Liste à la Vue ? Tout conseil sur la mise en œuvre et la façon de préserver l'état de la liste de sélection (comment puis-je passer la valeur sélectionnée de retour à l'action et à la vue de nouveau (possible façons de le faire) ?
L'Action dès maintenant:
public ActionResult Images(string x, string y)
{
//some code
ContentPage cp = this.ContentPage;
return View(cp);
}
//Post to action with same name:
[HttpPost]
public ActionResult Images(string someParameter)
{
ContentPage cp = this.ContentPage;
return View(cp);
}
La vue dès maintenant :
@model ContentPage
@{
ViewBag.Title = "Images";
CmsBaseController controller = (this.ViewContext.Controller as CmsBaseController);
}
@using (Html.BeginForm())
{
<div>
//This should go to List<SelectListItem> as I understand
<select name="perpage" id="perpage" onchange='submit();'>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</div>
}
Merci!!!!!!
Pourquoi n'est-il pas partie du modèle? Faire un ViewModel avec le selectlist est probablement l'option la plus facile.
OriginalL'auteur mishap | 2011-08-26
Vous devez vous connecter pour publier un commentaire.
Avez-vous pris un coup d'oeil à cette SORTE de question? La réponse, il semble que ça peut faire l'affaire si vous souhaitez utiliser ViewBag/ViewData à passer dans cette liste.
Cela dit, pourquoi ne pas simplement créer rapidement un viewmodel et les stocker? C'est vraiment un moyen simple de passer.
Je ne sais pas ce que votre ContentPage modèle mais vous pouvez certainement faire un ContentPageViewModel qui a tout ce genre de choses (y compris les valeurs de la liste de sélection) qui est nécessaire pour la page.
Exemple:
Il serait assez facile, par exemple, d'avoir une propriété dans le viewmodel de tenir la sélection et l'un des biens que détient quelques énumération de valeurs possibles. Quelque chose comme ceci:
où le Choix, dans mon exemple, est une classe qui a deux propriétés, l'une qui contient un identificateur, et de l'autre le texte à afficher. Quelque chose comme ceci:
Et puis peut-être vous avez, peut-être, un
DropDownListFor
qui gère l'affichage/sélection travailler pour vous. Quelque chose comme ceci:De retour dans votre contrôleur de l'action, le viewmodel est
SelectedId
seront remplis avec l'Id correspondant pour le Choix cueillies à la vue de la liste déroulante.@Html.DropDownListFor(model => model.Size, (SelectList)ViewBag.Size, string.Empty)
essentiellement la même réponse que ci-dessus, mais un petit rappel que vous pouvez jeter le SelectList dans un ViewBag et de créer dans le Contrôleur. Sinon, merci pour le rappel sur la construction de la DropDowns de cette façon.OriginalL'auteur itsmatt