J'ai un problème suivant. Dans mon modèle de vue je définissais certaines propriétés de la liste comme suit:Comment lier Les listes d'un modèle de vue personnalisé à un dropDownList et obtenir la valeur sélectionnée après POST dans ASP.NET MVC?
public class BasketAndOrderSearchCriteriaViewModel
{
List<KeyValuePair> currencies;
public ICollection<KeyValuePair> Currencies
{
get
{
if (this.currencies == null)
this.currencies = new List<KeyValuePair>();
return this.currencies;
}
}
List<KeyValuePair> deliverMethods;
public ICollection<KeyValuePair> DeliveryMethods
{
get
{
if (this.deliverMethods == null)
this.deliverMethods = new List<KeyValuePair>();
return this.deliverMethods;
}
}
}
Ce modèle de vue est intégré dans un autre modèle de vue:
public class BasketAndOrderSearchViewModel
{
public BasketAndOrderSearchCriteriaViewModel Criteria
{
[System.Diagnostics.DebuggerStepThrough]
get { return this.criteria; }
}
}
J'utilise 2 méthodes d'action; on est pour l'EEG et l'autre pour POST:
[HttpGet]
public ActionResult Search(BasketAndOrderSearchViewModel model){...}
[HttpPost]
public ActionResult SubmitSearch(BasketAndOrderSearchViewModel model){...}
De l'avis je mets en œuvre l'ensemble du modèle de vue en utilisant l'aide EditorFor-Html qui ne veut pas afficher automatiquement DropDownLists pour les propriétés de la liste! 1. Question: Comment pouvez-vous laisser afficher EditorFor DropDownLists?
Depuis que je ne pouvais pas comprendre comment afficher DropDownLists en utilisant EditorFor, j'ai utilisé l'aide DropDownList Html et rempli par le modèle de vue comme suit:
public IEnumerable<SelectListItem> DeliveryMethodAsSelectListItem()
{
List<SelectListItem> list = new List<SelectListItem>();
list.Add(new SelectListItem()
{
Selected = true,
Text = "<Choose Delivery method>",
Value = "0"
});
foreach (var item in this.DeliveryMethods)
{
list.Add(new SelectListItem()
{
Selected = false,
Text = item.Value,
Value = item.Key
});
}
return list;
}
Ma 2. question: Comme vous pouvez voir je passe mon modèle de vue à l'action metho avec l'attribut POST! Existe-t-il un moyen de faire en sorte que la valeur sélectionnée d'une DropDownList soit liée au modèle de vue transmis? À l'heure actuelle, tous DropDownList sont vides et la valeur sélectionnée ne peut être récupérée que par la Request.Form que je veux absolument éviter!
J'apprécierais beaucoup quelques idées ou conseils sur ceci!
Merci pour votre réponse rapide à ma question! Cela m'a donné un bon indice dans quelle direction je dois aller! Je vais fournir ma solution finale ici quand c'est fait! – tmesi