Asp.Net MVC中DropDownListFor的用法(转)
2016.03.04
扩展:如果 view中传入的是List<T>类型 怎么使用 DropList
既然是List<T> 那么我转化成 T List<T>的第一个,最后一个不就是M吗?
@Html.DropDownListFor(model=>model.First().Title, ViewData["Title"] as List<SelectListItem>, "标题", @"dropdownlist") </p>
在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的用法
在Asp.Net MVC中可以用DropDownListFor的方式来让用户选择已定列表中的一个数值.用法不复杂,这里简单做一个记录. 首先我们要定义一个 Model ,用户在 DropDownLis ...
- 转:Asp.Net MVC中DropDownListFor的用法
在Asp.Net MVC中可以用DropDownListFor的方式来让用户选择已定列表中的一个数值.用法不复杂,这里简单做一个记录. 首先我们要定义一个 Model ,用户在 DropDownLis ...
- ASP.NET MVC中多种ActionResult用法总结
最近一段时间做了个ASP.NET MVC4.0的项目,项目马上就要结束了,今天忙里偷闲简单总结一下心得: 1. 如果Action需要有返回值的话,必须是ActionResult的话,可以返回一个Emp ...
- ASP.NET MVC中Area的另一种用法
ASP.NET MVC中Area的另一种用法 [摘要]本文只是为一行代码而分享 context.MapRoute("API", "api/{controller}/{ac ...
- [摘]在ASP.NET MVC中使用DropDownList
在ASP.NET MVC中,尽管我们可以直接在页面中编写HTML控件,并绑定控件的属性,但更方便的办法还是使用HtmlHelper中的辅助方法.在View中,包含一个类型为HtmlHelper的属性H ...
- 在 ASP.NET MVC 中使用 HTML Helpers 的那些事
在 ASP.NET MVC 中使用 HTML Helpers 方法,可以返回得到标准的 HTML 标签,就像 <input>.<button> 或者 <img> 等 ...
- ASP.NET MVC中使用DropDownList
在ASP.NET MVC中,尽管我们可以直接在页面中编写HTML控件,并绑定控件的属性,但更方便的办法还是使用HtmlHelper中的辅助方法.在View中,包含一个类型为HtmlHelper的属性H ...
- Ext.Net学习笔记24:在ASP.NET MVC中使用Ext.Net
在前面的笔记中已经介绍了如何在ASP.NET WebForm中使用Ext.Net,由于这个系列一直在WebForm中使用,所以并没有涉及到ASP.NET MVC中的用法. 如果你要在ASP.NET M ...
- 在ASP.NET MVC中使用DropDownList
在ASP.NET MVC中,尽管我们可以直接在页面中编写HTML控件,并绑定控件的属性,但更方便的办法还是使用HtmlHelper中的辅助方法.在View中,包含一个类型为HtmlHelper的属性H ...
随机推荐
- SQLLDR 教程
)- 总览 http://blog.csdn.net/dbanote/article/details/9153895 )- 命令行参数 http://blog.csdn.net/dbano ...
- MJRefresh自定义刷新动画
[一]常见用法 最原始的用法,耦合度低,但是不能统一管理.我们需要在每一个控制器都写以下代码,很繁琐,以后项目修改起来更繁琐,得一个控制器一个控制器的去定位.修改. 1.1 使用默认刷新(耦合度底,但 ...
- Android 调用系统照相机拍照和录像
本文实现android系统照相机的调用来拍照 项目的布局相当简单,只有一个Button: <RelativeLayout xmlns:android="http://schemas.a ...
- iOS中block的使用、实现底层、循环引用、存储位置
一.整体介绍 定义:C语言的匿名函数,
- maven编译java代码报“非法字符: \65279 ”错误的解决方法
前段时间开发一个项目,使用maven进行编译时报“非法字符: \65279 ”,但是眼睛看怎么都正确的,文件转成utf-8编码还是报错. 最后没办法,暴力解决了这个问,步骤如下 1.把文件内容复制出来 ...
- jQuery代码优化:事件委托篇
推荐阅读原文:http://www.ituring.com.cn/article/467# 推荐11收藏 随着DOM结构的复杂化和Ajax等动态脚本技术的运用,事件委托自然浮出了水面.jQuery为绑 ...
- 区别和详解:jQuery extend()和jQuery.fn.extend()
1.认识jQuery extend()和jQuery.fn.extend() jQuery的API手册中,extend方法挂载在jQuery和jQuery.fn两个不同对象上方法,但在jQuery内部 ...
- TechEd2013 Shanghai Hol Session PPT Share
上个月去上海参加了TechEd 2013,并且参与了Hands-on-Lab环节,作为讲师引导大家完成<Local DB in WP8>实验的内容.由于实验的内容采用MVVM架构完成,因此 ...
- coursera机器学习-聚类,降维,主成分分析
#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...
- EF Power Tools的Reverse Engineer Code First逆向生成Model时处理计算字段
VS2013上使用EF Power Tools的Reverse Engineer Code First逆向生成Model时,没有处理计算字段.在保存实体时会出现错误. 可以通过修改Mapping.tt ...