2010-11-14 71 views
0

Est-il possible d'avoir un seul modèle de vue avec une liste utilisée pour une liste déroulante et d'obtenir également la valeur sélectionnée de la liste déroulante à partir du modèle de vue lorsque je publie un formulaire?ASP.NET MVC - Liaison de modèle avec liste déroulante

Si oui, comment puis-je faire cela?

+0

Postez votre code de formulaire . Vous ne devriez pas avoir besoin du paramètre en fonction de la façon dont vous configurez votre formulaire. – rboarman

+0

J'ai changé ma question. – Rookian

Répondre

2

Bien sûr, comme toujours commencer par définir votre modèle de vue:

public class MyViewModel 
{ 
    public int? SelectedItemValue { get; set; } 
    public IEnumerable<Item> Items { get; set; } 
} 

public class Item 
{ 
    public int? Value { get; set; } 
    public string Text { get; set; } 
} 

le régulateur:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      // TODO: Fill the view model with data from 
      // a repository 
      Items = Enumerable 
       .Range(1, 5) 
       .Select(i => new Item 
       { 
        Value = i, 
        Text = "item " + i 
       }) 
     }; 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(MyViewModel model) 
    { 
     // TODO: based on the value of model.SelectedItemValue 
     // you could perform some action here 
     return RedirectToAction("Index"); 
    } 
} 

et enfin la vue fortement typé:

<% using (Html.BeginForm()) { %> 
    <%= Html.DropDownListFor(
     x => x.SelectedItemValue, 
     new SelectList(Model.Items, "Value", "Text") 
    ) %> 
    <input type="submit" value="OK" /> 
<% } %>