首页 > 其他分享 >MVC单表二级联动

MVC单表二级联动

时间:2022-09-01 11:46:06浏览次数:67  
标签:list1 System MVC 单表 联动 tname using public

今天学了MVC中单表二级联动,使用一个表单对其进行分级别查询

一个是下拉框的二级联动

一个是树状图类型的二级联动,树状图二级联动如果需要,后续可以将联动换为a标签,进行进一步的升级

这是单表的内容

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Model
{
    public class DataModel
    {
        [Display(Name = "主键id")]
        public int tid { get; set; }
        [Display(Name = "城市所属/级别id")]
        public int pid { get; set; }
        [Display(Name = "名称")]
        public string tname { get; set; }
    }
}

 

先看一下树状图的二级联动,相对于下拉框的二级联动会简单一点

后台直接用ado接收数据库的值return将值传入视图

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using BLL;
using Model;
using Newtonsoft.Json;

namespace day.Views
{
    public class typeController : Controller
    {
        BLL1 bll = new BLL1();
        // GET: type
        public ActionResult Index()
        {
            List<DataModel> list = bll.bang();
            return View(list);
        }
    }
}

 

前台代码,使用ol和li还有ul进行分级效果

@{
    ViewBag.Title = "Index";
}
@using Model
@model List<DataModel>
<h2>二级联动</h2>
<ol>
    @foreach (DataModel item in Model.Where(m => m.pid == 0))
    {
        <li>
            @item.tname
            @foreach (DataModel it in Model.Where(m => m.pid == item.tid))
            {
                <ul>@it.tname</ul>
            }
        </li>
    }
</ol>

 里面添上数据运行效果就是一个侧边的树状图了,可以使用分布视图进行显示,类似母版页左侧树状图效果

接下来是下拉框的二级联动,具体思路是获取第一级别的下拉内容,当下拉框发生改变的时候进行第二个下拉列表的改变

使用是post方法请求,最后序列化json返回

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using BLL;
using Model;
using Newtonsoft.Json;

namespace day.Views
{
    public class typeController : Controller
    {
        BLL1 bll = new BLL1();
        // GET: type
        public ActionResult Index()
        {
            List<DataModel> list = bll.bang();
            list.Insert(0, new DataModel { tid = -1, tname = "请选择" });
            ViewBag.xia = new SelectList(list, "tid", "tname");
            List<DataModel> list1 = bll.bang();
            list1.Insert(0, new DataModel { tid = -1, tname = "请选择" });
            ViewBag.xia1 = new SelectList(list1, "tid", "tname");
            return View(list);
        }
        [HttpPost]
        public ActionResult lian(int pid)
        {
            List<DataModel> list1 = bll.bang();
            list1=list1.Where(m=>m.pid==pid).ToList();
            list1.Insert(0, new DataModel { tid = -1, tname = "请选择" });
            string json = JsonConvert.SerializeObject(list1);
            
            return Json(json);
        }
    }
}

前台使用ajax向后台传值,把所选的一级id传入后台,如果一级id中含有2级id就进行遍历,查询后的结果传回遍历,这是整个二级联动两个方法的思路

@{
    ViewBag.Title = "Index";
}
@using Model
@model List<DataModel>
<h2>二级联动</h2>
<select id="xia1" onchange="fun()">
    @foreach (var item in Model.Where(m => m.pid == 0))
    {
        <option value="@item.tid">@item.tname</option>
    }
</select>
<select id="xia2">
    <option value="-1">请选择</option>
</select>
<script>
    function fun() {
        $.ajax({
            url: "/type/lian",
            data: { pid: $("#xia1").val() },
            type: "post",
            success: function (d) {
                $("#xia2").empty();
                $(JSON.parse(d)).each(function () {
                  
                    var op = "<option value=" + this.tid + ">" + this.tname + "</option>";
                 
                    $("#xia2").append(op);
                })
            }
        })
    }
</script>

 最后的显示结果如下

 

标签:list1,System,MVC,单表,联动,tname,using,public
From: https://www.cnblogs.com/fearless-g/p/16646002.html

相关文章

  • MVC过滤器-权限过滤器
    这几天有个问题一直困扰着我,就是我们常用的项目中的登录,在几乎所有平台上都需要用户注册账号,有了账号才能登录从而使用我们所开发出来的各种平台,就是这个后台的权限过滤器,......
  • SpringMVC支持ant风格
    SpringMVC中的ant风格?:表示任意单个字符*:任意0个或多个字符**:表示任意的一层或多层目录注:在使用的时候,只能使用//xxx的方式......
  • SpringMVC学习笔记(一)——简介
    1.MVC模式是什么1.1MVC模式简介MVC模式,全称为Model-View-Controller(模型-视图-控制器)模式,它是一种软件架构模式,其目标是将软件的用户界面(即前台页面)和业务逻辑分离,使......
  • SpringMVC 02: SpringMVC响应get和post请求 + 5种获取前端数据的方式
    响应get和post请求SpringMVC中使用@RequestMapping注解完成对get请求和post请求的响应项目结构和配置文件与SpringMVC博客集中的"SpringMVC01"保持一致在webapp/......
  • 今天在写MVC+Ajax上传图片的时候,感觉想不起来了,再复习一下
    首先我们在写前台布局的时候要有一个上传文件的控件,同时将这个控件的name属性命名一下,并且将ajax的控件拖拽进来,以及ajax的各项属性写好就像这样写完前台之后,记得去Shar......
  • SpringMVC
    感谢!!!......
  • SpringMVC静态资源的过滤
    方法一:使用tomcat默认的servlet进行匹配。配置在web.xm,配置代码如下:<!--激活tomcat的defaultservlet拦截静态资源--><servlet-mapping><servlet-name>default</serv......
  • 面试题之:SpringMVC框架
    1、谈一下你对SpringMVC框架的理解(了解)SpringMVC是一个基于Java的、实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将we......
  • SpringMVC 01: SpringMVC + 第一个SpringMVC项目
    SpringMVCSpringMVC概述:是基于MVC开发模式的框架,用来优化控制器是Spring家族的一员,也具备IOC和AOP什么是MVC:它是一种开发模式,是模型视图控制器的简称,所有的......
  • 使用js实现5种加密解密算法(凯撒密码、字母倒排序、单表置换、维基利亚、转换加密算法
    在学习操作系统的时候,我们会学到系统安全的章节,而在这一块会有关于加密解密算法的学习。一共有5种常见的加密解密算法:凯撒密码、字母倒排序、单表置换、维基利亚、转换加......