• 为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();
    }
  • 相关阅读:
    中金所期货(future)指数
    Nginx负载均衡算法之四
    WSGI协议
    Flask 响应之定制全局有效的错误页面,之设置cookie,头信息。
    Python数据结构之栈,队列和堆
    三、Oracle 游标、存储过程、存储函数、触发器
    二、Oracle的结构学习
    一、Oracle的SQL语句学习
    oracle中的修改表结构
    eclipse编写xml文件时类名的自动补全(使用sts插件)
  • 原文地址:https://www.cnblogs.com/darrenji/p/3597502.html
Copyright © 2020-2023  润新知