2009-06-17 11 views
0

私はドロップダウンを持っており、ボタンをクリックすると、私はusercontrolにデータを表示したい 以下のコードは期待どおりに動作しません。コントローラMVCの部分表示を使用してaspxページのusercontrolを使用

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); 
     } 

答えて

1

<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> 

//フォームの完全なポストをやっているので、あなたは部分ビューを返すようにしたくありません。 ViewData ["CarModel"]を正しいモデルに設定して、同じビューを再描画したいとします。ビュー内のRenderPartialはこれを使用して、コードに正しい部分ビューを「インクルード」します。

これは、AJAX経由で投稿した場合とは異なることに注意してください。その時点で、ページの特定の要素を置き換えるように設定し、その要素に入る部分だけをレンダリングしたいとします。

[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(); 
    } 
関連する問題