zoukankan      html  css  js  c++  java
  • 为DropDownListFor设置选中项

    在MVC中,当涉及到强类型编辑页,如果有select元素,需要根据当前Model的某个属性值,让Select的某项选中。本篇只整理思路,不涉及完整代码。

    □ 思路

    往前台视图传的类型是List<SelectListItem>,把SelectListItem选中项的Selected属性设置为true,再把该类型对象实例放到ViewBag,ViewData或Model中传递给前台视图。

      通过遍历List<SelectListItem>类型对象实例

    □ 控制器

    public ActionResult SomeAction(int id)
    {
        //从数据库获取Domain Model
        var domainModel = ModelService.LoadEntities(m => m.ID == id).FirstOrDefault<Model>();
     
        //通过某个方法获取List<SelectListItem>类型对象实例
        List<SelectListItem> items = SomeMethod();
     
        //遍历集合,如果当前Domain model的某个属性与SelectListItem的Value属性相等,把SelectListItem的Selected属性设置为true
        foreach(SelectListItem item in items)
        {
            if(item.Value == Convert.ToString(domainModel.某属性))
            {
                item.Selected = true;
            }
        }
     
        //把List<SelectListItem>集合对象实例放到ViewData中
        ViewData["somekey"] = items;
     
        //可能涉及到把Domain Model转换成View Model
     
        return PartialView(domainModel);
    }

    □ 前台视图显示

    @model DomainModel
    @Html.DropDownListFor(m => m.SomeProperty,(List<SelectListItem>)ViewData["somekey"],"==请选择==")

      通过遍历Model集合

    给View Model设置一个bool类型的字段,描述是否被选中。
    把Model的某些属性作为SelectListItem的Text和Value值。根据View Model中的布尔属性判断是否要把SelectListItem的Selected设置为true.

    □ View Model

    public class Department
    {
        public int Id {get;set;}
        public string Name {get;set;}
        public bool IsSelected {get;set;}
    }

    □ 控制器

    public ActionResult Index()
    {
      SampleDbContext db = new SampleDbContext();
      List<SelectListItem> selectListItems = new List<SelectListItem>();
     
      //遍历Department的集合
      foreach(Department department in db.Departments)
      {
        SelectListItem = new SelectListItem
        {
          Text = department.Name,
          Value = department.Id.ToString(),
          Selected = department.IsSelected.HasValue ? department.IsSelected.Value : false
        }
        selectListItems.Add(selectListItem);
      }
      ViewBag.Departments = selectListItems;
      return View();
    }
  • 相关阅读:
    Angular6在自定义指令中使用@HostBingDing() 和@HostListener()
    升级到Angular6后对老版本的RXJS代码做相应的调整
    关于Angular6版本升级和RXJS6新特性的讲解
    ANGULAR 使用 ng build --prod 编译报内存错误的解决办法
    在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all
    在js中获取页面元素的属性值时,弱类型导致的诡异事件踩坑记录,
    前端使用mobx时,变量已经修改了,为什么组件还是没变化,map类型变量,对象类型变量的值获取问题(主要矛盾发生在组件使用时)
    在Java中发送http的post请求,设置请求参数等等
    spring定时任务注解@Scheduled的记录
    js获取dom元素的子元素,父元素,兄弟元素小记
  • 原文地址:https://www.cnblogs.com/darrenji/p/3597502.html
Copyright © 2011-2022 走看看