Asp.Net MVC中DropDownListFor的用法
在Asp.Net MVC中可以用DropDownListFor的方式来让用户选择已定列表中的一个数值。用法不复杂,这里简单做一个记录。
- 首先我们要定义一个 Model ,用户在 DropDownList 中选择指定的值赋给属性 ReadyTimeHour
public class EricSunModel {public string ReadyTimeHour { get; set; } }
- Model定义完毕之后,接下来处理Controller的逻辑
- 【注:这里用了ViewData来记录DropDownList中所要显示的所有列表数值】
public ActionResult EricSunAction() {EricSunModel esModel = new EricSunModel();esModel.ReadyTimeHour = "00";GenerateReadyTimeViewData();return View(esModel); }private void GenerateReadyTimeViewData() {ViewData["HourList"] = GetTimeHourList(); }private List<SelectListItem> GetTimeHourList() {List<SelectListItem> hourList = new List<SelectListItem>();for (int i = 0; i < 24; i++){if (i < 10){hourList.Add(new SelectListItem { Text = "0" + i.ToString(), Value = "0" + i.ToString() });}else{hourList.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() });}}return hourList; }
- 接下来我们在View中可以用下面一行代码来绑定DropDownList
- 【注:第一个参数为绑定Model中的属性,即-->要为此属性赋值】
- 【注:第二个参数为DropDownList的所有数据源】
@Html.DropDownListFor(m => m.ReadyTimeHour, ViewData["HourList"] as List<SelectListItem>)
- 截图如下所示
- 如果我们想在DropDownList中的最顶端添加一个默认值的话,请模仿下面的写法:添加第三个参数
@Html.DropDownListFor(m => m.ReadyTimeHour, ViewData["HourList"] as List<SelectListItem>, "---Select---")
- 截图如下所示:
- 这里涉及到如何缓存DropDownList的所有数值问题(特别是提交表单,验证不通过,需要再次返回本页面的情况),如下假设Model中包含属性ReadyTimeHourList(是一个List<SelectListItem>),由于页面中没有控件对此数据进行绑定,那么在提交表单之后传回给action的model中将收集不到此数值,我们用HiddenFor在页面中去缓存List的数值是不能成功的(将括号中的值换作ViewData["HourList"]也是行不通的),原因是HiddenFor只能缓存单个数值
@Html.HiddenFor(m => m.ReadyTimeHourList)
- 既然用页面控件缓存的方式行不通,如果解决上述问题呢?请看如下代码,如果验证不能通过,那么需要重新绑定ViewData["HourList"]的数值
- 【实际上这里涉及到了ViewData生命周期的问题,由于提交表单之后,代码进入了如下的Action中,超出了原来的ViewData的声明周期,因此原来保存的ViewData的值将失效,所以需要再次的重新绑定】
[HttpPost] public ActionResult EricSunAction(EricSunModel model) {if (!ModelState.IsValid){GenerateReadyTimeViewData();return View(model);}// model.ReadyTimeHour;return RedirectToAction("OtherActionName"); }
- 这里提供另外的一个常用知识点:ViewBag 与 ViewData 以及 TempData 的区别。请看如下链接:
http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications
Asp.Net MVC中DropDownListFor的用法相关推荐
- Asp.Net MVC中DropDownListFor的用法(转)
2016.03.04 扩展:如果 view中传入的是List<T>类型 怎么使用 DropList 既然是List<T> 那么我转化成 T List<T>的第一个 ...
- MVC中helper的用法。
回想着以前用asp叉开发的网页时,那种架构为了脱离控件,我们会建立一个htmlview层,该层只引用model和bll当然还有工具类.然后所有的数据在前台的展示,都在这里进行,拼接html标签等等.最 ...
- 在ASP.NET MVC中使用DropDownList
在ASP.NET MVC中,尽管我们可以直接在页面中编写HTML控件,并绑定控件的属性,但更方便的办法还是使用HtmlHelper中的辅助方法.在View中,包含一个类型为HtmlHelper的属性H ...
- ASP.NET MVC中使用DropDownList
在ASP.NET MVC中,尽管我们可以直接在页面中编写HTML控件,并绑定控件的属性,但更方便的办法还是使用HtmlHelper中的辅助方法.在View中,包含一个类型为HtmlHelper的属性H ...
- mvc html dropdownlist,ASP.NET MVC中使用DropDownList地详解
DropDownList控件又称下拉列表框控件,DropDownList控件动态连接到数据库,按指定 条件从数据库 中查询 出列表选项数据,然后绑 定到控件,可以方便快速地显示出多个下拉选 项 . 同 ...
- 通过源代码研究ASP.NET MVC中的Controller和View(二)
通过源代码研究ASP.NET MVC中的Controller和View(一) 在开始之前,先来温习下上一篇文章中的结论(推论): IView是所有HTML视图的抽象 ActionResult是Cont ...
- 在Asp.Net MVC中实现RequiredIf标签对Model中的属性进行验证
在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现RequiredIf标签对Model中的属性进行验证 具体场景为:某一属性是否允许为null的验证,要根据另 ...
- ASP.NET MVC中你必须知道的13个扩展点
ScottGu在其最新的博文中推荐了Simone Chiaretta的文章13 ASP.NET MVC extensibility points you have to know,该文章为我 ...
- Asp.net mvc中的Ajax处理
在Asp.net MVC中的使用Ajax, 可以使用通用的Jquery提供的ajax方法,也可以使用MVC中的AjaxHelper. 这篇文章不对具体如何使用做详细说明,只对于在使用Ajax中的一些需 ...
最新文章
- 前端要完!人工智能已经能实现自动编写 HTML 和 CSS
- 研究人员利用脑电ErrP信号实时控制机器人
- C语言经典算法 11-20
- highly dynamic working process is a great approach for learning
- 【Python】特征工程:数值特征的缩放与编码
- OpenStack网络模块核心OpenvSwitch的全面解读
- Yii Framework2.0开发教程(5)数据库mysql性能
- [SDOI2011]计算器 BSGS
- 第三章 垃圾回收的一些概念
- excel提取文字拼音首字母
- websoc是什么可以卸载吗_Win7系统中unity web player是什么程序?能否卸载
- android18lazuli,Free 18 Japan for you on AliExpress.
- 线性代数之 伪逆矩阵
- mysql事务 start transaction
- WPF使用Blend
- 嵌入式Web项目(二)——CGI的引入
- Maxcompute 小记1
- Qt 代码规范(叶海)
- Python spider (二) Requests Lxml bs4
- C# vb .net实现负片特效滤镜