一、控制器·
public ActionResult Index()
{
if (ViewBag.courseID != null)
{
}
else
{
ViewBag.studentID = new SelectList(db.Students,"ID","LastName");
ViewBag.courseID = new SelectList(db.Courses, "CourseID", "Title");
}
return View();
}
二、Ajax
(1)服务器
public ActionResult DDL(int studentID)
{
//string a = studentID;
//var courseID = db.Enrollments.Where(s => s.StudentID == studentID).Select(s=>s.CourseID);
//foreach (var cid in courseID)
//{
// var course = db.Courses.Where(s => s.CourseID == cid);
// IEnumerable<>
//}
//var q = from a in db.Enrollments
// join b in db.Students on a.StudentID equals studentID
// join c in db.Courses on a.CourseID equals c.CourseID
// group new {
// c=c
// } by c.CourseID into g
// select new
// {
// CourseID = g.Key,
// Title = g.FirstOrDefault,
// };
var q = from a in db.Enrollments
from b in db.Students
from c in db.Courses
where a.StudentID == studentID && a.CourseID == c.CourseID
select new
{
CourseID = c.CourseID,
Title = c.Title
};
var result=q.Distinct().ToList();//去重Distinct()
//return RedirectToAction("Index");
return Json(q.Distinct().ToList());
}
(2)前端
@using (Html.BeginForm("DDL", "Home"))
{
@Html.Label("课程:")
@*@Html.DropDownList("courseID")*@
@Html.DropDownList("studentID")
@Html.DropDownList("courseID",ViewBag.Course as IEnumerable<SelectListItem>, "请选择课程")
<input type="submit"value="提交" />
}
<script type="text/javascript">
//$(function () {
// $("#courseID").change(function () {
// alert(this.id)
// })
//})
//$(function () {
// $("#courseID").change(function () {
// alert($("#courseID").val())
// //alert(this.val())
// })
//})
//var value=$("#courseID").val();
//alert(value);
$(function () {
$("#studentID").change(function () {
$.ajax({
url: "@Url.Action("DDL","Home")" + "?studentID= " + $(this).val(),
type: 'POST',
data: null,
dataType: "json",
success: function (data) {
$("#courseID").empty();
// $("#courseID").append("<option value=0>Ajax</option>")
var json = eval(data); //数组
$.each(json, function (index, item) {
//循环获取数据
var CourseID = json[index].CourseID;
var Title = json[index].Title;
// $("#list").html($("#list").html() + "<br>" + name + " - " + idnumber + " - " + sex + "<br/>");
$("<option value='" + CourseID + "'>" + Title + "</option>").appendTo("#courseID");
});
}
});
});
});
</script>
@Html.DropDownList("studentID"),studentID即为ViewBag.studentID,studentID也是下拉框的id,下拉框的Value和Text会自动填充。
@Html.DropDownList("courseID",ViewBag.Course as IEnumerable<SelectListItem>, "请选择课程"),第一个参数是下拉框的id,第二个即ViewBag.Course,第三个参数为下拉框Text默认值。
Linq To SQL三张表联结查询,Distinct()去重。
JQuery Ajax语法,使用Ajax实现DropDownList两级联动,在ASP.NET MVC中Ajax最好使用POST方式,否则会报500的错误码。