Asp.net MVC中关于剃须刀问题如何解决?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!
最近在学习Asp.net MVC剃须刀,在使用中遇到了不少的问题,所以想着总结下来,没有经验的童鞋就是这样磕磕碰碰出来的经验,话不多说,来一起看看详细的介绍:
这也许是Asp.net MVC的一个Bug.ViewModel中定义了数据类型为日期字段:
& lt;输入name=癇irthDay"类=癴orm-control"id=癇irthDay"类型=皌ext"value=https://www.yisu.com/zixun/" " data-val-required="生日必须输入!”data-val=" true " data-val-date=弊侄紊毡匦胧侨掌凇?>
所需的错误消息和定义的一样,而数据类型的消息却没有? ?既然数据类型有自定义消息的公开属性为啥不起作用?如果有知道的欢迎留言。
<强>解决方法:强>
通过Javascript在页面载荷的时候替换掉原来的消息。
(“# txtDesignatedDate")美元.attr (& # 39; data-val-date& # 39; & # 39;请输入一个日期像(2017/1/1)& # 39;);
剃刀模型绑定设置如下:
@Html。LabelFor (m=比;m。生日,新的{@class=癱ol-md-2 control-label"}) @Html。TextBoxFor (m=比;m。的生日,“{0:d-MMM-yy}“,新{@class=癴orm-control"})
边测试情况:显示日期不对的错误消息。
铬测试情况:居然没有错误提示! !
如果是英文以外同样格式的日期,都会显示日期不对错误消息。这到底怎么回事?
官网(http://jqueryvalidation.org/date-method/)其实也有说明:
翻看JS代码:
//http://docs.jquery.com/Plugins/Validation/Methods/date 日期:功能(价值,元素){ 返回this.optional(元素)| | !/无效|南/2馐?新日期(值).toString ()); },//http://docs.jquery.com/Plugins/Validation/Methods/dateISO dateISO:功能(价值,元素){ 返回this.optional(元素)| |/^ \ d {4} [\/\] \ d {1,2} [\/\] \ d {1,2} $/test(价值); },
dateISO也只支持yyyy-MM-dd或者yyyy/MM/dd格式的验证。没办法只能重写一个验证方法覆盖原来的。
<强>解决方法:强>
(函数($){ .validator.methods美元。日期=function(值、元素){ 返回this.optional(元素)| | DateCheck(价值); } }(jQuery));
自定义一个DateCheck函数就可以了。
操作端设置:
返回视图(新RegisterViewModel{生日=DateTime。现在,城市BirthCity=I虾);
视图端设置:
@Html。DropDownListFor (m=比;m。BirthCity,新的SelectListItem [] { 新SelectListItem{文本=癑iangxi", https://www.yisu.com/zixun/Value=" 1 "}, 新SelectListItem{文本="北京",Value=" 2 "}, 新SelectListItem{文本=吧虾!?值=3}, 新SelectListItem{文本="深圳" Value=" 4 "}, },{@class="表单控件"})
偶尔这样的设置无法选择行动中设置的选项,如果有知道原因的欢迎留言。
<强>解决方法:强>用SelectList替代SelectItem列表。
@Html。DropDownListFor (m=比;m。BirthCity,新的SelectList(新SelectListItem [] { 新SelectListItem{文本=癑iangxi", https://www.yisu.com/zixun/Value=" 1 "}, 新SelectListItem{文本="北京",Value=" 2 "}, 新SelectListItem{文本=吧虾!?值=3}, 新SelectListItem{文本="深圳" Value=" 4 "}, },“价值”、“文本”Model.BirthCity),新{@class=氨淼タ丶眪)
<代码>自动完成=皁ff" 代码>在Chrome58以后都无效了。这个是浏览器的问题没办法了。
<强>解决方法:>强通过Javascript在提交之前将控件的残疾属性删除,提交完成之后再复原属禁用性。