在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>),由于页面中没有控件对此数据进行绑定,那么在提交表单之后传回给actionmodel中将收集不到此数值,我们用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");
}

  • 这里提供另外的一个常用知识点:ViewBagViewData 以及 TempData 的区别。请看如下链接:

http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications

Asp.Net MVC中DropDownListFor的用法相关推荐

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

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

  2. MVC中helper的用法。

    回想着以前用asp叉开发的网页时,那种架构为了脱离控件,我们会建立一个htmlview层,该层只引用model和bll当然还有工具类.然后所有的数据在前台的展示,都在这里进行,拼接html标签等等.最 ...

  3. 在ASP.NET MVC中使用DropDownList

    在ASP.NET MVC中,尽管我们可以直接在页面中编写HTML控件,并绑定控件的属性,但更方便的办法还是使用HtmlHelper中的辅助方法.在View中,包含一个类型为HtmlHelper的属性H ...

  4. ASP.NET MVC中使用DropDownList

    在ASP.NET MVC中,尽管我们可以直接在页面中编写HTML控件,并绑定控件的属性,但更方便的办法还是使用HtmlHelper中的辅助方法.在View中,包含一个类型为HtmlHelper的属性H ...

  5. mvc html dropdownlist,ASP.NET MVC中使用DropDownList地详解

    DropDownList控件又称下拉列表框控件,DropDownList控件动态连接到数据库,按指定 条件从数据库 中查询 出列表选项数据,然后绑 定到控件,可以方便快速地显示出多个下拉选 项 . 同 ...

  6. 通过源代码研究ASP.NET MVC中的Controller和View(二)

    通过源代码研究ASP.NET MVC中的Controller和View(一) 在开始之前,先来温习下上一篇文章中的结论(推论): IView是所有HTML视图的抽象 ActionResult是Cont ...

  7. 在Asp.Net MVC中实现RequiredIf标签对Model中的属性进行验证

    在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现RequiredIf标签对Model中的属性进行验证 具体场景为:某一属性是否允许为null的验证,要根据另 ...

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

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

  9. Asp.net mvc中的Ajax处理

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

最新文章

  1. 前端要完!人工智能已经能实现自动编写 HTML 和 CSS
  2. 研究人员利用脑电ErrP信号实时控制机器人
  3. C语言经典算法 11-20
  4. highly dynamic working process is a great approach for learning
  5. 【Python】特征工程:数值特征的缩放与编码
  6. OpenStack网络模块核心OpenvSwitch的全面解读
  7. Yii Framework2.0开发教程(5)数据库mysql性能
  8. [SDOI2011]计算器 BSGS
  9. 第三章 垃圾回收的一些概念
  10. excel提取文字拼音首字母
  11. websoc是什么可以卸载吗_Win7系统中unity web player是什么程序?能否卸载
  12. android18lazuli,Free 18 Japan for you on AliExpress.
  13. 线性代数之 伪逆矩阵
  14. mysql事务 start transaction
  15. WPF使用Blend
  16. 嵌入式Web项目(二)——CGI的引入
  17. Maxcompute 小记1
  18. Qt 代码规范(叶海)
  19. Python spider (二) Requests Lxml bs4
  20. C# vb .net实现负片特效滤镜

热门文章

  1. Deployment、ReplicaSet、Pod和Service的关系
  2. 实现微信tab颜色渐变效果
  3. 三年磨一剑,高德地图体验优化总结
  4. 时间管理(2:四象限法则)
  5. python水浒传名字次数_基于Python的《水浒传》中人物分析
  6. Word中如何清除域底纹(如何清除目录的灰色背景)
  7. 新手教程:怎样取出iPhone里的SIM卡
  8. 内部类大展身手——— 静态内部类实现单例模式
  9. 医疗票据OCR识别,全栈赋能保险行业
  10. linux shell 显示字符串长度,Shell获取字符串长度的多种方法总结