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

Posted by & filed under Uncategorized.

作者:Eric Sun 出处:http://www.cnblogs.com/mingmingruyuedlut/p/3557125.html 在Asp.Net MVC中可以用DropDownListFor的方式来让用户选择已定列表中的一个数值。用法不复杂,这里简单做一个记录。  首先我们要定义一个 Model ,用户在 DropDownList 中选择指定的值赋给属性 ReadyTimeHour

Model定义完毕之后,接下来处理Controller的逻辑 【注:这里用了ViewData来记录DropDownList中所要显示的所有列表数值】

接下来我们在View中可以用下面一行代码来绑定DropDownList 【注:第一个参数为绑定Model中的属性,即–>要为此属性赋值】 【注:第二个参数为DropDownList的所有数据源】

 截图如下所示    如果我们想在DropDownList中的最顶端添加一个默认值的话,请模仿下面的写法:添加第三个参数

 截图如下所示: 这里涉及到如何缓存DropDownList的所有数值问题(特别是提交表单,验证不通过,需要再次返回本页面的情况),如下假设Model中包含属性ReadyTimeHourList(是一个List<SelectListItem>),由于页面中没有控件对此数据进行绑定,那么在提交表单之后传回给action的model中将收集不到此数值,我们用HiddenFor在页面中去缓存List的数值是不能成功的(将括号中的值换作ViewData[“HourList”]也是行不通的),原因是HiddenFor只能缓存单个数值

既然用页面控件缓存的方式行不通,如果解决上述问题呢?请看如下代码,如果验证不能通过,那么需要重新绑定ViewData[“HourList”]的数值 【实际上这里涉及到了ViewData生命周期的问题,由于提交表单之后,代码进入了如下的Action中,超出了原来的ViewData的声明周期,因此原来保存的ViewData的值将失效,所以需要再次的重新绑定】

这里提供另外的一个常用知识点:ViewBag 与 ViewData 以及 TempData 的区别。请看如下链接:         http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications Read more […]

ASP.NET MVC下的四种验证编程方式

Posted by & filed under Uncategorized.

ASP.NET MVC下的四种验证编程方式[续篇] 作者:Artech 出处:http://artech.cnblogs.com/ ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效性,我们将针对参数的验证成为Model绑定。总地来说,我们可以采用4种不同的编程模式来进行针对绑定参数的验证。 目录 一、手工验证绑定的参数 二、使用ValidationAttribute特性 三、让数据类型实现IValidatableObject接口 四、让数据类型实现IDataErrorInfo接口 一、手工验证绑定的参数 在定义具体Action方法的时候,对已经成功绑定的参数实施手工验证无疑是一种最为直接的编程方式,接下来我们通过一个简单的实例来演示如何将参数验证逻辑实现在对应的Action方法中,并在没有通过验证的情况下将错误信息响应给客户端。我们在一个ASP.NET Read more […]

(转)ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则

Posted by & filed under Uncategorized.

作者:Artech 出处:http://artech.cnblogs.com/ 对于Model验证,理想的设计应该是场景驱动的,而不是Model(类型)驱动的,也就是对于同一个Model对象,在不同的使用场景中可能具有不同的验证规则。举个简单的例子,对于一个表示应聘者的数据对象来说,针对应聘的岗位不同,肯定对应聘者的年龄、性别、专业技能等方面有不同的要求。但是ASP.NET MVC的Model验证确是Model驱动的,因为验证规则以验证特性的形式应用到Model类型及其属性上。这样的验证方式实际上限制了Model类型在基于不同验证规则的使用场景中的重用。通过上一篇文章《将ValidationAttribute应用到参数上》的扩展我们将验证特性直接应用在参数上变成了可能,这从一定程度上解决了这个问题,但是只能解决部分问题,因为应用到参数的验证特性只能用于针对参数类型级别的验证,而不能用于针对参数类型属性级别的验证(源代码从这里下载)。[本文已经同步到《How Read more […]

(转)ASP.NET MVC的客户端验证:jQuery的验证

Posted by & filed under Uncategorized.

作者:Artech 出处:http://artech.cnblogs.com/ 之前我们一直讨论的Model验证仅限于服务端验证,即在Web服务器根据相应的规则对请求数据实施验证。如果我们能够在客户端(浏览器)对用户输入的数据先进行验证,这样会减少针对服务器请求的频率,从而缓解Web服务器访问的压力。ASP.MVC 2.0及其之前的版本采用ASP.NET Ajax进行客户端验证,在ASP.NET MVC 3.0中,jQuery验证框架被引入是我们可以采用Unobtrusive JavaScript的方式进行客户端验证。[本文已经同步到《How ASP.NET MVC Works?》中] 目录 一、Unobtrusive JavaScript 二、以内联的方式指定验证规则 三、单独指定验证规则和错误消息 一、Unobtrusive JavaScript Unobtrusive JavaScript已经成为了JavaSccript编程的一个指导方针,Unobtrusive Read more […]