2016-05-01 6 views
1

が動作しない:コントローラでカスケードドロップダウンは、web.configファイルで

<add name="Connection" connectionString="Data Source=DESKTOP-SLJTE7M\TAHMINA;Initial Catalog=UniversityDB;Integrated Security=True" providerName="System.Data.SqlClient"></add>` 

:ビューページで

public ActionResult TeacherCoursAssign() 
{ 
    ViewBag.Departments = GetDepartments(); 
    return View(); 
}  
public List<Department> GetDepartments() 
{ 
    List<Department> departments = departmentManager.GetAllDepartments(); 
    return departments; 
} 

public JsonResult GetTeachersByDepartmentId(int deptId) 
{ 
    var teachers = GetTeacher(); 
    var teacherList = teachers.Where(a => a.DepartmentId == deptId).ToList(); 
    return Json(teacherList, JsonRequestBehavior.AllowGet); 
} 

<form method="POST" id="myForm">` 
    .... 
    <label for="departmentId">Select Department</label> 
    <select name="departmentId" id="departmentId"> 
     <option value="">Select...</option> 
     @foreach (var department in ViewBag.Departments) 
     { 
      <option value="@department.DeptId">@department.DeptName</option> 
     } 
    </select> 

    <label for="teacherId"></label> 
    <select name="teacherId" id="teacherId"></select> 

    <input type="submit" id="Submit" value="Submit" class="btn btn-default" /> 
</form> 


@section scripts 
{ 
    <script src="~/Scripts/jquery-1.10.2.min.js"></script> 
    <script> 
     $(document).ready(function() { 
      $("#departmentId").change(function() { 
       $("#myForm").submit(function() { 
        return false; 
       }); 
       var deptId = $("#departmentId").val(); 
       $("#teacherId").empty(); 
       var json = { departmentId: deptId }; 
       alart(deptId); 
       $.ajax({ 
        type: "POST", 
        url: '@Url.Action("GetTeachersByDepartmentId", "TeacherCourseAssign")', 
        contentType: "application/json; charset=utf-8", 
        data: JSON.stringify(json), 
        success: function(data) { 
         alert(data); 
         $.each(data, function(key, value) { 
          alert(key); 
          $("#teacherId").append('<option value=' + value.TeacherId + '>' + value.TeacherName + '</option>'); 
         }); 
        } 
       }); 
      }); 
     }); 
    </script> 
} 

私の見解ページをロードした後この特定のコントローラーでは、カスケードドロップダウンが機能していません。部門名はロードされていますが、その特定の部門の教師名はロードされていません。私は間違いを見つけられませんでした。あなたのGetTeachersByDepartmentId()方法で

+0

代わりにconsole.debug()を使用することをお勧めします:) –

答えて

0

パラメータはdeptIdという名前で、あなたはdeptIdの値(departmentId 1つだけ)を送信していないので、そのvakueは0であり、あなたのクエリが.Where(a => a.DepartmentId == 0)ためには結果が返されないだろう。 ajaxの電話番号を

に変更する
var json = { deptId : deptId }; // change 
$.ajax({ 
    type: "POST", 
    url: '@Url.Action("GetTeachersByDepartmentId", "TeacherCourseAssign")', 
    data: json, // change 
    success: function(data) { 
     .... 
    } 
}); 

contentTypeオプションを削除することもできます。スクリプトから$("#myForm").submit(function() { return false; });も削除する必要があります。

他の問題もあります。特に、ビューを返す必要がある場合は、this DotNetFiddleのコードを確認することをおすすめします。

+0

これは私にとって大きなhlpです –

関連する問題