mvc3[1]DropDownList

本文介绍了一种在ASP.NET MVC应用中高效填充下拉框数据的方法,并通过两个实例详细展示了如何从数据库获取数据并将其转换为下拉框选项。此外,还提供了一种简化的方法来减少重复代码。

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

1.建议使用这种方法
private static readonly string DEFAULT_VALUE= "请选择";
List<SelectListItem> levels = newList<SelectListItem>();
levels.Add(new SelectListItem { Text =DEFAULT_VALUE, Value = DEFAULT_VALUE });
levels.AddRange(newList<SelectListItem>()
 {
   new SelectListItem { Text = "销售员", Value ="1" }
});
ViewBag.Levels = levels;
@Html.DropDownListFor(model =>model.Level, ViewBag.Levels as IEnumerable<SelectListItem>)
 
 
2.
   List<SelectListItem> areas =
                      areaBo.Find(c =>c.Valid == (Int32)IsValidStatus.Valid)
                      .Select(c => newSelectListItem { Text = c.Name, Value = c.Id.ToString() })
                      .OrderBy(c => c.Text)
                      .ToList();
           areas.Insert(0, item);
 
  <td colspan="3" class="left" style="vertical-align:middle;">
                   @Html.DropDownList("Area", @ViewBag.Area asIEnumerable<SelectListItem>)
                </td>

Area是一个实体的一个属性,服务器端获取值的时候直接是model名字.值;

由于使用第二种方法重构前的代码

 #region 查询条件设置
        public void SetRegionWhere(string type = "f1ormu")
        {
            #region 得到数据库数据
            IEnumerable<SalesTerritory> territories = null;
            int staffId = LoginHelper.GetID();
            territories = boTerritory.Find(t => t.ManagerId == staffId && t.State == (Int32)IsValidStatus.Valid);
            Staff staffEntity = boStaff.FindByKey(LoginHelper.GetID());

            List<SelectListItem> filiales = boFiliale
             .Find(f => f.Valid == (Int32)IsValidStatus.Valid)
             .Select(f => new SelectListItem { Text = f.Name, Value = f.Id.ToString() })
             .OrderBy(f => f.Text)
             .ToList();
            filiales.Insert(0, item);

            List<SelectListItem> clusters = boCluster
              .Find(c => c.Valid == (Int32)IsValidStatus.Valid)
              .Select(c => new SelectListItem { Text = c.ClusterName, Value = c.Id.ToString() })
              .OrderBy(c => c.Text)
              .ToList();
            clusters.Insert(0, item);

            //获取当前登录用户对应的所有销售代码
            List<SelectListItem> salescodes = boTerritory.Find(n => n.ManagerId == -2238).Distinct()
                .Select(s => new SelectListItem { Text = s.SalesCd, Value = s.Id.ToString() }).ToList();
            salescodes.Insert(0, item);

            List<SelectListItem> areas =
                      areaBo.Find(c => c.Valid == (Int32)IsValidStatus.Valid)
                      .Select(c => new SelectListItem { Text = c.Name, Value = c.Id.ToString() })
                      .OrderBy(c => c.Text)
                      .ToList();
            areas.Insert(0, item);
            #endregion

            #region

            if (type == "email")
            {
                if (Session[sessionEmailList] != null)
                {
                    ViewEmailSiteCodeSearchCriteria wheremode = Session[sessionEmailList] as ViewEmailSiteCodeSearchCriteria;
                    if (!string.IsNullOrWhiteSpace(wheremode.Area.ToString()))
                    {
                        ViewBag.Area = new SelectList(areas, "Value", "Text", wheremode.Area);
                    }
                    else
                    {
                        ViewBag.Area = areas;
                    }
                    if (!string.IsNullOrWhiteSpace(wheremode.Cluster.ToString()))
                    {
                        ViewBag.Cluster = new SelectList(clusters, "Value", "Text", wheremode.Cluster);
                    }
                    else
                    {
                        ViewBag.Cluster = clusters;
                    }
                    if (!string.IsNullOrWhiteSpace(wheremode.Filiale.ToString()))
                    {
                        ViewBag.Filiale = new SelectList(filiales, "Value", "Text", wheremode.Filiale);
                    }
                    else
                    {
                        ViewBag.Filiale = filiales;
                    }
                    if (!string.IsNullOrWhiteSpace(wheremode.SalesCode.ToString()))
                    {
                        ViewBag.SalesCode = new SelectList(salescodes, "Value", "Text", wheremode.SalesCode);
                    }
                    else
                    {
                        ViewBag.SalesCode = salescodes;
                    }
                    return;
                }
            }
            if (type == "sms")
            {
                if (Session[sessionEmailList] != null)
                {
                    ViewSmsSiteCodeSearchCriteria wheremode = Session[sessionSMSList] as ViewSmsSiteCodeSearchCriteria;
                    if (!string.IsNullOrWhiteSpace(wheremode.Area.ToString()))
                    {
                        ViewBag.Area = new SelectList(areas, "Value", "Text", wheremode.Area);
                    }
                    else
                    {
                        ViewBag.Area = areas;
                    }
                    if (!string.IsNullOrWhiteSpace(wheremode.Cluster.ToString()))
                    {
                        ViewBag.Cluster = new SelectList(clusters, "Value", "Text", wheremode.Cluster);
                    }
                    else
                    {
                        ViewBag.Cluster = clusters;
                    }
                    if (!string.IsNullOrWhiteSpace(wheremode.Filiale.ToString()))
                    {
                        ViewBag.Filiale = new SelectList(filiales, "Value", "Text", wheremode.Filiale);
                    }
                    else
                    {
                        ViewBag.Filiale = filiales;
                    }
                    if (!string.IsNullOrWhiteSpace(wheremode.SalesCode.ToString()))
                    {
                        ViewBag.SalesCode = new SelectList(salescodes, "Value", "Text", wheremode.SalesCode);
                    }
                    else
                    {
                        ViewBag.SalesCode = salescodes;
                    }
                    return;
                }
            }

            if (type == "f1")
            {
                if (Session[sessionF1List] != null)
                {
                    ViewF1SiteCodeSearchCriteria wheremode = Session[sessionF1List] as ViewF1SiteCodeSearchCriteria;
                    if (!string.IsNullOrWhiteSpace(wheremode.Area.ToString()))
                    {
                        ViewBag.Area = new SelectList(areas, "Value", "Text", wheremode.Area);
                    }
                    else
                    {
                        ViewBag.Area = areas;
                    }
                    if (!string.IsNullOrWhiteSpace(wheremode.Cluster.ToString()))
                    {
                        ViewBag.Cluster = new SelectList(clusters, "Value", "Text", wheremode.Cluster);
                    }
                    else
                    {
                        ViewBag.Cluster = clusters;
                    }
                    if (!string.IsNullOrWhiteSpace(wheremode.Filiale.ToString()))
                    {
                        ViewBag.Filiale = new SelectList(filiales, "Value", "Text", wheremode.Filiale);
                    }
                    else
                    {
                        ViewBag.Filiale = filiales;
                    }
                    if (!string.IsNullOrWhiteSpace(wheremode.SalesCode.ToString()))
                    {
                        ViewBag.SalesCode = new SelectList(salescodes, "Value", "Text", wheremode.SalesCode);
                    }
                    else
                    {
                        ViewBag.SalesCode = salescodes;
                    }
                    return;
                }
            }

            if (type == "mu")
            {
                if (Session[sessionF1List] != null)
                {
                    ViewMUSiteCodeSearchCriteria wheremode = Session[sessionF1List] as ViewMUSiteCodeSearchCriteria;
                    if (!string.IsNullOrWhiteSpace(wheremode.Area.ToString()))
                    {
                        ViewBag.Area = new SelectList(areas, "Value", "Text", wheremode.Area);
                    }
                    else
                    {
                        ViewBag.Area = areas;
                    }
                    if (!string.IsNullOrWhiteSpace(wheremode.Cluster.ToString()))
                    {
                        ViewBag.Cluster = new SelectList(clusters, "Value", "Text", wheremode.Cluster);
                    }
                    else
                    {
                        ViewBag.Cluster = clusters;
                    }
                    if (!string.IsNullOrWhiteSpace(wheremode.Filiale.ToString()))
                    {
                        ViewBag.Filiale = new SelectList(filiales, "Value", "Text", wheremode.Filiale);
                    }
                    else
                    {
                        ViewBag.Filiale = filiales;
                    }
                    if (!string.IsNullOrWhiteSpace(wheremode.SalesCode.ToString()))
                    {
                        ViewBag.SalesCode = new SelectList(salescodes, "Value", "Text", wheremode.SalesCode);
                    }
                    else
                    {
                        ViewBag.SalesCode = salescodes;
                    }
                    return;
                }
            }
            #endregion

            ViewBag.Area = areas;
            ViewBag.Cluster = clusters;
            ViewBag.Filiale = filiales;
            ViewBag.SalesCode = salescodes;
        }


重构后的方法1 方法


  #region 查询条件设置
        public void SetRegionWhere()
        {
            #region 得到数据库数据
            IEnumerable<SalesTerritory> territories = null;
            int staffId = LoginHelper.GetID();
            territories = boTerritory.Find(t => t.ManagerId == staffId && t.State == (Int32)IsValidStatus.Valid);
            Staff staffEntity = boStaff.FindByKey(LoginHelper.GetID());

            List<SelectListItem> filiales = boFiliale
             .Find(f => f.Valid == (Int32)IsValidStatus.Valid)
             .Select(f => new SelectListItem { Text = f.Name, Value = f.Id.ToString() })
             .OrderBy(f => f.Text)
             .ToList();
            filiales.Insert(0, item);

            List<SelectListItem> clusters = boCluster
              .Find(c => c.Valid == (Int32)IsValidStatus.Valid)
              .Select(c => new SelectListItem { Text = c.ClusterName, Value = c.Id.ToString() })
              .OrderBy(c => c.Text)
              .ToList();
            clusters.Insert(0, item);

            //获取当前登录用户对应的所有销售代码
            List<SelectListItem> salescodes = boTerritory.Find(n => n.ManagerId == -2238).Distinct()
                .Select(s => new SelectListItem { Text = s.SalesCd, Value = s.Id.ToString() }).ToList();
            salescodes.Insert(0, item);

            List<SelectListItem> areas =
                      areaBo.Find(c => c.Valid == (Int32)IsValidStatus.Valid)
                      .Select(c => new SelectListItem { Text = c.Name, Value = c.Id.ToString() })
                      .OrderBy(c => c.Text)
                      .ToList();
            areas.Insert(0, item);
            #endregion

            ViewBag.Area = areas;
            ViewBag.Cluster = clusters;
            ViewBag.Filiale = filiales;
            ViewBag.SalesCode = salescodes;
        }
        #endregion



在control返回的时候需要返回model既可以

     [HttpPost]
        public ActionResult EmailList(int? page, ViewEmailSiteCodeSearchCriteria wheremodel)
        {
            //加载页面的查询信息 
            SetRegionWhere();
            CreateSentResultList("email");
            if (wheremodel.IsSearch == 1)
            {
                Session[sessionEmailList] = wheremodel;
                GetEmailList(wheremodel, 1);
            }
            return View("EmailList", wheremodel);
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员敏敏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值