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

□ 思路

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

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

□ 控制器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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

?
1
2
3
4
5
6
public class Department
{
  public int Id {get;set;}
  public string Name {get;set;}
  public bool IsSelected {get;set;}
}

□ 控制器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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();
}

下面是其它网友的补充:

后台代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public ActionResult Index(FormCollection collection)
     {
       IList<Project> li = Utility.SqlHelper.getProjectList();
       SelectList selec = new SelectList(li, "ID", "Name");
    
       if (collection["drop"] != null)
       {
         string projectID = collection["drop"];
         selec = new SelectList(li, "ID", "Name", projectID);//根据返回的选中项值设置选中项 
        ViewData["ruturned"] = collection["drop"];
       }
       ViewData["drop"] = selec;
      return View();
    }

前端代码:

@using (Html.BeginForm()){
@Html.DropDownList("drop", ViewData["d"] as SelectList)
    <input  type="submit" value="查看对应分组列表" />
        }
        <p> 当前项目ID: @ViewData["ruturned"]</p>

转载于:https://www.cnblogs.com/sjqq/p/7355107.html

ASP.NET MVC中为DropDownListFor设置选中项的方法相关推荐

  1. ASP.NET MVC 中宿主WCF Rest 服务的解决方法

    我这里就是通过routes.MapRoute(参数)中的参数进行处理的.MapRoute的重载如下: RouteTable.Routes.MapRoute( string name, string u ...

  2. ASP.NET MVC中你必须知道的13个扩展点

         ScottGu在其最新的博文中推荐了Simone Chiaretta的文章13 ASP.NET MVC extensibility points you have to know,该文章为我 ...

  3. ASP.NET MVC中使用AJAX(XMLHttpRequest、Microsoft AJAX Library......)

    AJAX的好处就是不会堵塞页面,可以提高用户体验,可以减少数据传输尺寸,提高应用程序的性能.目前,AJAX技术可以说是已经成为WEB开发的标准技术. AJAX技术是纯客户端技术,任何客户端框架(如:M ...

  4. html action能跨域么,ASP.NET MVC 中设置跨域

    原标题:ASP.NET MVC 中设置跨域 来源:GetPower cnblogs.com/gdpw/p/9236661.html 程序员共读整理发布,转载请联系作者获得授权ASP.NET MVC中设 ...

  5. Asp.Net MVC中DropDownListFor的用法(转)

    2016.03.04 扩展:如果 view中传入的是List<T>类型 怎么使用 DropList 既然是List<T> 那么我转化成 T  List<T>的第一个 ...

  6. Asp.Net MVC中DropDownListFor的用法

    在Asp.Net MVC中可以用DropDownListFor的方式来让用户选择已定列表中的一个数值.用法不复杂,这里简单做一个记录. 首先我们要定义一个 Model ,用户在 DropDownLis ...

  7. Asp.net mvc中的Ajax处理

    在Asp.net MVC中的使用Ajax, 可以使用通用的Jquery提供的ajax方法,也可以使用MVC中的AjaxHelper. 这篇文章不对具体如何使用做详细说明,只对于在使用Ajax中的一些需 ...

  8. 在 ASP.NET MVC 中使用 Chart 控件

    在 .NET 3.5 的时候,微软就提供了一个 Chart 控件,网络上有大量的关于在 VS2008 中使用这个控件的文章,在 VS2010 中,这个控件已经被集成到 ASP.NET 4.0 中,可以 ...

  9. 在ASP.NET MVC中使用IIS级别的URL Rewrite

    在ASP.NET MVC中使用IIS级别的URL Rewrite 原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的 ...

最新文章

  1. ASN.1简介及OpenSSL中ASN.1接口使用举例
  2. Android登录拦截器实现方式(一)
  3. BlogEngine .NET 日期控件显示问题
  4. 配置linux服务器做简单的路由器
  5. JQuery学习笔记——JQuery基础
  6. 大快HanLP自然语言处理技术介绍
  7. Jzoj5421 嘟嘟噜
  8. flowable 监听器中无法获取 oauth 上下文对象
  9. 科普:国产芯片、芯片生产设备、通讯标准前世今生(转载)
  10. jdk文件夹里点哪个是安装_jdk在哪个文件夹里面
  11. 实验室设计规范与标准
  12. 信捷pLC C语言错误格式,信捷PLC常见问题及解决方法经验分享
  13. 固态硬盘有哪些协议知识点?
  14. UE《空山新雨后》总结笔记
  15. 条形码录入测试软件,条码管理:商品条码录入
  16. python嵌入式系统开发_图解嵌入式系统开发之语言篇:初识Python
  17. Hyperledger Fabric 实战(十二): Fabric 源码本地调试
  18. 助力百万企业从容上云,易建科技有六大“法宝”傍身!
  19. patch 和put的区别
  20. SARSCAPE做SBAS详细流程(生成连接图与干涉流)

热门文章

  1. 链接 动态链接 静态链接
  2. java(6)——+号和++号--号
  3. iOS13 已越狱 iOS12.4 已越狱
  4. iOS 真机调试包集合 包含 iOS 12.4 不断更新
  5. VC控件 Progress Control
  6. [精选代码笔记]Anagram, group-anagrams, two sum
  7. Oralce中日期格式
  8. Transaction rolled back because it has been marked as rollback-only
  9. 【Docker】docker安装redis
  10. PIL库自我学习总结及应用(美白,磨皮,搞笑图片处理)