ASP.NET MVC中为DropDownListFor设置选中项的方法
在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设置选中项的方法相关推荐
- ASP.NET MVC 中宿主WCF Rest 服务的解决方法
我这里就是通过routes.MapRoute(参数)中的参数进行处理的.MapRoute的重载如下: RouteTable.Routes.MapRoute( string name, string u ...
- ASP.NET MVC中你必须知道的13个扩展点
ScottGu在其最新的博文中推荐了Simone Chiaretta的文章13 ASP.NET MVC extensibility points you have to know,该文章为我 ...
- ASP.NET MVC中使用AJAX(XMLHttpRequest、Microsoft AJAX Library......)
AJAX的好处就是不会堵塞页面,可以提高用户体验,可以减少数据传输尺寸,提高应用程序的性能.目前,AJAX技术可以说是已经成为WEB开发的标准技术. AJAX技术是纯客户端技术,任何客户端框架(如:M ...
- html action能跨域么,ASP.NET MVC 中设置跨域
原标题:ASP.NET MVC 中设置跨域 来源:GetPower cnblogs.com/gdpw/p/9236661.html 程序员共读整理发布,转载请联系作者获得授权ASP.NET MVC中设 ...
- Asp.Net MVC中DropDownListFor的用法(转)
2016.03.04 扩展:如果 view中传入的是List<T>类型 怎么使用 DropList 既然是List<T> 那么我转化成 T List<T>的第一个 ...
- Asp.Net MVC中DropDownListFor的用法
在Asp.Net MVC中可以用DropDownListFor的方式来让用户选择已定列表中的一个数值.用法不复杂,这里简单做一个记录. 首先我们要定义一个 Model ,用户在 DropDownLis ...
- Asp.net mvc中的Ajax处理
在Asp.net MVC中的使用Ajax, 可以使用通用的Jquery提供的ajax方法,也可以使用MVC中的AjaxHelper. 这篇文章不对具体如何使用做详细说明,只对于在使用Ajax中的一些需 ...
- 在 ASP.NET MVC 中使用 Chart 控件
在 .NET 3.5 的时候,微软就提供了一个 Chart 控件,网络上有大量的关于在 VS2008 中使用这个控件的文章,在 VS2010 中,这个控件已经被集成到 ASP.NET 4.0 中,可以 ...
- 在ASP.NET MVC中使用IIS级别的URL Rewrite
在ASP.NET MVC中使用IIS级别的URL Rewrite 原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的 ...
最新文章
- ASN.1简介及OpenSSL中ASN.1接口使用举例
- Android登录拦截器实现方式(一)
- BlogEngine .NET 日期控件显示问题
- 配置linux服务器做简单的路由器
- JQuery学习笔记——JQuery基础
- 大快HanLP自然语言处理技术介绍
- Jzoj5421 嘟嘟噜
- flowable 监听器中无法获取 oauth 上下文对象
- 科普:国产芯片、芯片生产设备、通讯标准前世今生(转载)
- jdk文件夹里点哪个是安装_jdk在哪个文件夹里面
- 实验室设计规范与标准
- 信捷pLC C语言错误格式,信捷PLC常见问题及解决方法经验分享
- 固态硬盘有哪些协议知识点?
- UE《空山新雨后》总结笔记
- 条形码录入测试软件,条码管理:商品条码录入
- python嵌入式系统开发_图解嵌入式系统开发之语言篇:初识Python
- Hyperledger Fabric 实战(十二): Fabric 源码本地调试
- 助力百万企业从容上云,易建科技有六大“法宝”傍身!
- patch 和put的区别
- SARSCAPE做SBAS详细流程(生成连接图与干涉流)
热门文章
- 链接 动态链接 静态链接
- java(6)——+号和++号--号
- iOS13 已越狱 iOS12.4 已越狱
- iOS 真机调试包集合 包含 iOS 12.4 不断更新
- VC控件 Progress Control
- [精选代码笔记]Anagram, group-anagrams, two sum
- Oralce中日期格式
- Transaction rolled back because it has been marked as rollback-only
- 【Docker】docker安装redis
- PIL库自我学习总结及应用(美白,磨皮,搞笑图片处理)