4

私は2つのドロップダウンリストを作成しました。私がやろうとしているのは、それらをカスケードにすることです。2番目のものが最初のものに依存するように。その理由は、私のデータベースがこのようにレイアウトされているためです

****Car_iD      Car_Name            Car_drive** 
      1           Honda             2 wheel drive
      2           Acura             4wheel drive        
      3           Toyota            2 wheel drive
      4           Honda             4wheelDrive       

ご覧のとおり、同じ Car_Name が 2 つありますが、Car_drive は異なります。したがって、ユーザーが最初のドロップダウン リストをクリックすると、Honda、Acura、Toyota が表示されますが、Honda を選択すると、2 番目のドロップダウン ボックスに 2wheeldrive と 4wheeldrive と表示されます。

私のコントローラーは次のようになります。

 public ActionResult Home()
  {
  ViewData["Car_Name"] = new SelectList(_context.Cars.Select(a => a.Car_Name).Distinct());
   ViewData["Car_drive"] = new SelectList(_context.Cars.Select(a => a.Car_drive).Distinct());
  }

私のビューは次のようになります

      Choose an Car
               <label for= "Car_Names"></label>
                <%= Html.DropDownList("Car_Name" )%>  

               <label for= "Application_Names"></label>
                <%= Html.DropDownList("Car_drive")%>    
                <input type = "submit" value ="Update" /> 
                 <% using(Html.BeginForm("Home", "Home")) { %>  
                <%}%>       

非常に多くのチュートリアルを読みましたが、実際には何もありません。MVC Awesome に近づきましたが、SelectableItem に参照がないというエラーが表示され続けました。これを実装するための助けは素晴らしいでしょう。

更新 これをコントローラーに追加しました

    public ActionResult CarNameChange(string Car_Name)
    {
        var car_drive = from env in _context.Cars
                              where env.Car_Name == Car_Name
                              select car_drive;
        return Json(ViewData["Car_Drive"] = car_drive); 
    }

ここで、コントローラーからこの情報を取得するためのスクリプトを作成するための助けが必要です。

   <script type = "text/javascript">
   $('#Car_Names').change(function(){
      var selectedName = $(this).val();
       $getJson('@Url.Action("
4

2 に答える 2

3

チェック: http://blogs.msdn.com/b/rickandy/archive/2012/01/09/cascasding-dropdownlist-in-asp-net-mvc.aspxおよびhttp://msprogrammer.serviciipeweb.ro/2011/ 02/13/asp-net-mvc-jquery-and-razor-cascading-dropdown-retriving-partial-views-json-send-objects-handling-errors/で、他に何も必要ありません。どちらのプロジェクトにも、コードを検査するためにダウンロードするデモがあります。

よろしく

編集:更新後

ViewData または ViewBag を使用しないでください。Cars と CarDrive のプロパティを含む ViewModel を作成すると、新しいものを簡単に追加できるようになります。

于 2012-04-04T20:01:38.827 に答える
2

クライアント側のjQueryスクリプトを使用して、Car_Name誰かが選択を変更するたびにドロップダウンでイベントを発生させます。

//Use your DOM identifier here. I don't know what it's called.
$('#car_name').change(function() {
    //Magic here.
});

ここでやりたいことは、このイベントが発生したときに、 の値で AJAX リクエストを開始することですCar_Name

ActionMethod に を返させJsonResultます。

次に、クライアント側でその情報をキャッチし、データを解析して選択オプションをドロップダウンに挿入しますCar_Drive

それがあなたがする必要があることであり、従うのが簡単な小さな断片に分解されています.

于 2012-04-04T18:00:58.140 に答える