zoukankan      html  css  js  c++  java
  • (八)学习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 = 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 = 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 = 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="100px;">
                        <option>请选择年级</option>
                    </select>
                </td>
    
                <td>
                    <select id="classSelect" name="classes" style="100px;">
                        <option>请选择班级</option>
                    </select>
                </td>
    
                <td>
                    <select id="studentSelect" name="student" style="100px;">
                        <option>请选择学生</option>
                    </select>
                </td>
            </tr>
        </table>
        <input type="submit" name="submit" id="submit" />
    </fieldset>
    @section scripts
    {
        <script type="text/javascript" src="~/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 = grade.options[gradeIndex].value;       //绑定的DataTextField的值
    
                var classes = document.getElementById("classSelect");
                var classesIndex = classes.selectedIndex;
                var classText = classes.options[classesIndex].text;
                var classesValue = classes.options[classesIndex].value;
    
                var student = document.getElementById("studentSelect");
                var studentIndex = student.selectedIndex;
                var studentText = student.options[studentIndex].text;
                var studentValue = student.options[studentIndex].value;
    
                if (gradeValue != -1 && classesValue != -1 && studentValue != -1) {
                    alert("你的选择是: " + gradeText + classText + studentText + "");
                }
                else {
                    alert("请选择年级、班级和学生信息");
                }
            });
        </script>
    }

    7.运行程序。

    8.去数据库添加数据:

    年级表:

    班级表:

    学生表:

    9.再次运行程序。

    点击提交,出现:

    10.完成。

  • 相关阅读:
    3.python函数编程-reduce函数
    2.python函数编程-filter函数
    1.python函数式编程-map函数
    匿名函数
    函数作用域
    风湿理论
    关于ProjectServer调用PSI 报Error GeneralReadOnlyColumn (20005)
    ProjectServer任务审批后自动发布
    ProjectServer如何让系统管理员模拟普通用户创建自己的时间表
    如何对Project Proffesional设置预警灯
  • 原文地址:https://www.cnblogs.com/wiming/p/3951909.html
Copyright © 2011-2022 走看看