2009-06-17 4 views
0

Je Dropdown et d'un simple clic, je veux afficher les données dans le usercontrol le code ci-dessous ne fonctionne pas comme prévu.l'aide d'un usercontrol à la page ASPX dans MVC avec vue partielle

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <% 
     using (Html.BeginForm()) 
     {%> 
    <%=Html.DropDownList("CarMake", (SelectList)ViewData["CarMake"])%> 
    <input type="submit" value="Get all car model" /> 
    <% 
     Html.RenderPartial("CarModel"); 
     } %> 
</asp:Content> 

// dans le contrôleur

public ActionResult Test1() 
     { 
      ViewData["CarMake"] = new SelectList(_carDataContext.Makes.Select(m => new { ID = m.Id, Name = m.Name }), "ID", "Name"); 
      return View(); 
     } 

     [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Test1(int carMake) 
     { 
      ViewData["CarMake"] = new SelectList(_carDataContext.Makes.Select(m => new { ID = m.Id, Name = m.Name }), "ID", "Name"); 
      var carModel = _carDataContext.Models.Where(m => m.MakeId == carMake).ToList(); 
      return PartialView("CarModel", carModel); 
     } 

Répondre

1

Depuis que vous faites un poste complet de la forme, vous ne voulez pas retourner une vue partielle. Vous voulez définir ViewData ["CarModel"] sur le modèle correct, puis ré-afficher la même vue. Le RenderPartial dans la vue utilisera ceci pour "inclure" la vue partielle correcte dans le code.

Notez que cela serait différent si vous postiez via AJAX. À ce moment-là, vous l'auriez configuré pour remplacer un élément particulier de la page et vous voudriez seulement rendre le partiel qui va dans cet élément.

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Test1(int carMake) 
    { 
     ViewData["CarMake"] = new SelectList(_carDataContext.Makes.Select(m => new { ID = m.Id, Name = m.Name }), "ID", "Name"); 
     ViewData["CarModel"] = _carDataContext.Models.Where(m => m.MakeId == carMake).ToList(); 
     return View(); 
    } 
Questions connexes