.net mvc DropDownList 下拉框_无限级分类

本文介绍如何在.NET MVC应用中使用DropDownList创建一个能够展示无限级分类的下拉选择框,主要涉及Controller部分的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、数据库设计:
id:int 
name:string
pid:int  //父级id(顶级菜单默认为0)

2、Controller:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcTest.Models;

namespace MvcTest.Controllers
{
    [ValidateInput(false)]
    public class HomeController : Controller
    {
        private testEntities db = new testEntities();

        [LoginFilter]
        public ActionResult Index()
        {
            BindDropDownList();
            return View();
        }

        //绑定顶级分类       
        private void BindDropDownList()
        {
            List<SelectListItem> select1 = new List<SelectListItem>();
            var one = from c in db.Categories where c.pId == 0 select c;
            foreach (var b in one)
            {
                string pname = b.name; 
                string pid = b.id.ToString();
                select1.Add(new SelectListItem
                {
                    Text = "> " + pname,
                    Value = pid
                });
                int sonpid = int.Parse(pid);
                string blank = " ┠ ";
                //递归子分类方法
                BindNode(sonpid, blank, select1);
            }
            ViewBag.caList = new SelectList(select1, "Value", "Text");
        }

        //绑定子分类      
        private void BindNode(int sonpid, string blank, List<SelectListItem> select1)
        {
            var two = db.Categories.Where(c => c.pId == sonpid);
            foreach (var c in two)
            {
                string sname = blank + c.name;
                string sid = c.id.ToString();
                select1.Add(new SelectListItem
                {
                    Text = sname,
                    Value = sid
                });
                int sonpids = int.Parse(sid);
                string blank2 = blank + "━";
                BindNode(sonpids, blank2, select1);
            }
        }
    }
}
3、view:
@Html.DropDownListFor(a => a.pId, ViewBag.caList as IEnumerable<SelectListItem> , new { style = "width: 120px;" })



上面的适用于操作类别的模块,如果是对操作文章的模块,建议在数据库增加一个字段:(string)cabh,在筛选的时候会非常的方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值