首页 > 代码库 > (八)学习MVC之三级联动
(八)学习MVC之三级联动
1.新建项目,MVC选择基本模板
2.新建类:Model/Student.cs,数据库信息有三个实体:分别是年级、班级和学生。
using System;using System.Collections.Generic;using System.ComponentModel.DataAnnotations;using System.Linq;using System.Web;namespace CascadeExample.Models{ public class Grade { [Key] public int GradeId { get; set; } public string GradeName { get; set; } public List<Class> Classes { get; set; } } public class Class { [Key] public int ClassId { get; set; } public string ClassName { get; set; } public int GradeId { get; set; } public Grade Grades { get; set; } public List<Student> Students { get;set; } } public class Student { [Key] public int StudentId { get; set; } public string StudentName { get; set; } public int ClassId { get; set; } public Class Classes { get; set; } }}
3.新建类:Model/StudentContext.cs
using System;using System.Collections.Generic;using System.Data.Entity;using System.Linq;using System.Web;namespace CascadeExample.Models{ public class StudentContext : DbContext { public DbSet<Student> Students { get; set; } //代码中为每个实体都创建了一个DbSet的属性。 public DbSet<Class> Classes { get; set; } public DbSet<Grade> Grades { get; set; } public StudentContext() : base("Connection") { Database.CreateIfNotExists(); //表示如果如果不存在此数据库,就去创建数据库。 } }}
4.修改Web.Config,数据存放在本地数据库上。
<connectionStrings> <add name="Connection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=Student;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Student.mdf" /> </connectionStrings>
5.新建控制器:HomeControl
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using CascadeExample.Models;namespace CascadeExample.Controllers{ public class HomeController : Controller { public StudentContext StudentContexts=new StudentContext(); #region 获取年级数据GetGrade() public JsonResult GetGrade() { IQueryable<Grade> grades= StudentContexts.Grades; List<Grade> gradeList = grades.ToList(); List<SelectListItem>gradeListItems=new List<SelectListItem>(); foreach (var i in gradeList) { gradeListItems.Add(new SelectListItem{Text = i.GradeName,Value =http://www.mamicode.com/ i.GradeId.ToString()}); } return Json(gradeListItems, JsonRequestBehavior.AllowGet); } #endregion #region 获取班级数据GetClass() public JsonResult GetClass(int id) { int gradegradeId = id; IQueryable<Class> classes = StudentContexts.Classes.Where(o => o.GradeId == gradegradeId); List<Class> classlList = classes.ToList(); List<SelectListItem> classListItems = new List<SelectListItem>(); foreach (var i in classlList) { classListItems.Add(new SelectListItem {Text = i.ClassName,Value =http://www.mamicode.com/ i.ClassId.ToString()}); } return Json(classListItems, JsonRequestBehavior.AllowGet); } #endregion #region 获取学生数据GetStudent() public JsonResult GetStudent(string id) { string[] ids = id.Split(",".ToCharArray()); string gradeId = ids[0]; string classId = ids[1]; int classesId= Convert.ToInt32(classId); IQueryable<Student> students = StudentContexts.Students.Where(o => o.ClassId == classesId); List<Student> studentList = students.ToList(); List<SelectListItem>studentListItems=new List<SelectListItem>(); foreach (var i in studentList) { studentListItems.Add(new SelectListItem{Text = i.StudentName,Value =http://www.mamicode.com/ i.StudentId.ToString()}); } return Json(studentListItems, JsonRequestBehavior.AllowGet); } #endregion #region Index() public ActionResult Index() { return View(); } #endregion }}
6.添加视图:View/Home/Index.cshtml
@model CascadeExample.Models.Grade@{ ViewBag.Title = "三级联动例子"; Layout = "~/Views/Shared/_Layout.cshtml";}<fieldset> <legend>三级联动例子</legend> <table> <tr> <td> <select id="gradeSelect" name="grade" style="width:100px;"> <option>请选择年级</option> </select> </td> <td> <select id="classSelect" name="classes" style="width:100px;"> <option>请选择班级</option> </select> </td> <td> <select id="studentSelect" name="student" style="width:100px;"> <option>请选择学生</option> </select> </td> </tr> </table> <input type="submit" name="submit" id="submit" /></fieldset>@section scripts{ <script type="text/javascript" src=http://www.mamicode.com/"~/Scripts/jquery-ui.min-1.11.1.js"></script> <script type="text/javascript"> $(document).ready(function () { GetGrade(); $("#gradeSelect").change(function () { GetClass(); GetStudent(); }); $("#classSelect").change(function () { GetStudent(); }); } ); function GetGrade() { $("#gradeSelect").empty(); var option = $("<option></option>").val(-1).text("请选择年级"); $("#gradeSelect").append(option); $.getJSON("/Home/GetGrade/", function (data) { $.each(data, function (i, item) { $("<option></option>") .val(item["Value"]) .text(item["Text"]) .appendTo("#gradeSelect"); }); }); } function GetClass() { $("#classSelect").empty(); var option = $("<option></option>").val(-1).text("请选择班级"); $("#classSelect").append(option); var url = "/Home/GetClass/" + $("#gradeSelect").val() + "/"; $.getJSON(url, function (data) { $.each(data, function (i, item) { $("<option></option>") .val(item["Value"]) .text(item["Text"]) .appendTo("#classSelect"); }); }); } function GetStudent() { $("#studentSelect").empty(); var option = $("<option></option>").val(-1).text("请选择学生"); $("#studentSelect").append(option); var url = "/Home/GetStudent/" + $("#gradeSelect").val() + "," + $("#classSelect").val() + "/"; $.getJSON(url, function (data) { $.each(data, function (i, item) { $("<option></option>") .val(item["Value"]) .text(item["Text"]) .appendTo("#studentSelect"); }); }); } $("#submit").click(function () { var grade = document.getElementById("gradeSelect"); var gradeIndex = grade.selectedIndex; //索引的值 var gradeText = grade.options[gradeIndex].text; //绑定的DataValueField的值 var gradeValue = http://www.mamicode.com/grade.options[gradeIndex].value; //绑定的DataTextField的值 var classes = document.getElementById("classSelect"); var classesIndex = classes.selectedIndex; var classText = classes.options[classesIndex].text; var classesValue =http://www.mamicode.com/ classes.options[classesIndex].value; var student = document.getElementById("studentSelect"); var studentIndex = student.selectedIndex; var studentText = student.options[studentIndex].text; var studentValue =http://www.mamicode.com/ student.options[studentIndex].value; if (gradeValue != -1 && classesValue != -1 && studentValue != -1) { alert("你的选择是: " + gradeText + classText + studentText + "。"); } else { alert("请选择年级、班级和学生信息"); } }); </script>}
7.运行程序。
8.去数据库添加数据:
年级表:
班级表:
学生表:
9.再次运行程序。
点击提交,出现:
10.完成。
(八)学习MVC之三级联动
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。