2016-07-15 3 views
0

私は2つのテーブルにManufacturerテーブルとManufacturerModelテーブルを持っています。私は2つのドロップダウンリストを設定しようとしています。製造業者のリストは、どのメーカーが選択されているかに基づいて、モデルのリストを表示します。しかし私が実装したものは動作しません。それは何もしません。MVCカスケードドロップダウン

私は

<script> 
$(function(){ 
$.ajax({ 
    type: "GET", 
    url: "/Device/GetManufacturers", 
    datatype: "Json", 
    success: function (data) { 
     $.each(data, function (index, value) { 
      $('#dropdownManufacturer').append('<option value="' + value.ManufacturerID + '">' + 
      value.Manufacturer1 +'</option>'); 
     }); 
    } 
}); 

    $('#dropdownManufacturer').change(function(){ 
     $('#dropdownModel').empty(); 

     $.ajax({ 
      type: "POST", 
      url: "/Device/GetModelsByManufacturerID", 
      datatype: "Json", 
      data: { manufacturerID: $('#dropdownManufacturer').val() }, 
      success: function (data) { 
       $.each(data, function (index, value) { 
        $('#dropdownModel').append('<option value="' + value.ManufacturerID + '">' + 
         value.Model + '</option>'); 
       }); 
      } 
     }); 
    }); 
    }); 
を持って、私は二つのモデル

public class ManufacturerModelDD 
{ 
    public DbSet<Manufacturer> Manufacturers { get; set; } 
    public DbSet<ManufacturerModel> ManufacturerModels { get; set; } 
} 

を取り入れた新しいViewModelにを作成し、私は私がそれらでほしいコントローラに2つの機能を作成しました。私の見解では

ManufacturerModelDD mm = new ManufacturerModelDD(); 

    public JsonResult GetManufacturers() 
    { 
     return Json(mm.Manufacturers.ToList(), JsonRequestBehavior.AllowGet); 
    } 

    public JsonResult GetModelsByManufacturerID(string manufacuterId) 
    { 
     int Id = Convert.ToInt32(manufacuterId); 

     var models = from a in mm.ManufacturerModels where a.ManufacturerID == Id select a; 

     return Json(models); 
    } 

+0

の下で、あなたのビューの特定のjavascriptのコードを持っていることを確認してください? – Shyju

+0

わかりません。私のドロップダウンは空白です。私はそれが私の機能かajaxかどうか分からない。 –

答えて

0

ManufacturerModelDDは、DbContextを継承しないクラスです。だから私は確信していない そのクラスのオブジェクトは、エンティティにアクセスするために使用することができます。

dbコンテキストクラスのオブジェクトを作成し、エンティティデータにアクセスすることを検討することができます。あなたのデシベルのコンテキストクラスを想定し
あなたは、このクラスのオブジェクトを使用することができ

この

public class YourDbContext : DbContext 
{ 
    public DbSet<Manufacturer> Manufacturers { get; set; } 
    public DbSet<ManufacturerModel> ManufacturerModels { get; set; } 
} 
のように見えます。

public JsonResult GetManufacturers() 
{ 
    var db = new YourDbContext(); 
    var data = db.Manufacturers 
       .Select(s=> new {Id =s.ManufacturerID , 
               Name = s.ManufacturerName}).ToList(); 
    return Json(data , JsonRequestBehavior.AllowGet); 
} 

また、データをループするときに正しいプロパティを使用していることを確認してください。

success: function (data) { 
    $.each(data, function (index, value) { 
     $('#dropdownManufacturer').append('<option value="' + value.Id+ '">' + 
     value.Name+'</option>'); 
    }); 
} 

また、あなたが作業されていない部分のscripsセクション

@section Scripts 
{ 
    <script> 
    $(function(){ 
     //your code goes here. 
    }); 
    </script> 
} 
+0

私のコードは、まったく同じように見えるが、何もないことを確認した。 @Html.DropDownList( "dropdownManufacturer"、新しいSelectList(string.Empty、 "Value"、 "Text")、 "メーカーを選択してください"、新しい{@style = "width:250;" }) –

+0

同じコードを試してみましたが、うまくいきました。あなたは 'db.Manufacturers'が何かを返すと確信していますか?あなたのブラウザコンソールを開き、jsエラーも探してください – Shyju

+0

jqueryのバージョンや使用する順序は何か? –

関連する問題