Silverlight数据验证中,发现总是最先执行.Net内置的数据类型验证,由于需要,很想取消数据类型验证。具体情况如下:
[Required(ErrorMessage="编码不能空!")] [Range(1,10000,ErrorMessage="编码只能是1万之内的数字")] [Display(Name="问卷编码")] [DisplayFormat(DataFormatString="{0:#####}",ApplyFormatInEditMode=true)] [CustomValidation(typeof(MyCustomValidationcs), "IsNumber")] public int Code { get; set; }
问题:
1、当在界面文本框内没有任何值时,显示的提示不是“编码不能空!” 而显示是“输入格式不正确”(个人推测:优先使用了内置的数据类型验证。晕:就是不想要它)
如图:
2、如果界面文本框输入非数字字符,如$、*、abc等时,不显示“编码只能是1万之内的数字”,而显示依旧是““输入格式不正确”,晕.
如图:
3、在文本框类输入10.0、11.00、88.等格式数字居然提示没错误(不想以这种格式显示整数数字),不知如何设置。
如图:
4、想用自定义验证验证是否为数字,发现内置的数据类型验证依然优先。晕晕!
5、由于该文本框位于一Page(启用了缓存)内,如果内置的数据类型验证提示错误,恰好此时Page需要导航到别的界面(Page),当再次导航到包含该文本框的Page界面时,发现文本框内数据是合法数据,但错误提示却一直存在,此时即使输入合法数据,错误提示“输入格式不正确”却不消失。(之所以问这么多问题,问题就纠结在这里!)
如图:
不知道如何处理这些问题~~~~(>_<)~~~~
恳请园子里面的大神和兄弟姐妹们不吝赐教,谢谢先!
看了一个所给链接内容,从中找不到解决“当再次导航到包含该文本框的Page界面时,发现文本框内数据是合法数据,但错误提示却一直存在,此时即使输入合法数据,错误提示“输入格式不正确”却不消失。”的方案。请大虾继续指教!
@边缘程序员2011: 这代码不是你自己写的吧!你还是再仔细的读写别人的代码,看看他是如何显示的出错信息提示吧。
@Launcher: 先谢谢你。
代码是我写的。目前这个问题搞的头大,这是不是silverlight的bug呀?郁闷,快没心情用silverlight做开发了。
@边缘程序员2011: 你的表单编码旁边显示验证错误的信息是怎么实现的?界面下方的错误提示又是怎么实现的?我只知道可以在绑定的时候通过自定义验证提供器来实现自定义错误显示。
@Launcher:
你好,我用的是DataForm控件,错误提示是Dataform的ValidationSummary。请问如何实现:绑定的时候通过自定义验证提供器。谢谢先@
@边缘程序员2011: http://www.cnblogs.com/zlgcool/archive/2008/10/23/1317871.html
,另外,你也可以写个IValueConverter,这样可以在ViewModel中去控制设置的值的类型。
@Launcher:
自定义了转换器(IValueConverter),问题依旧:
由于该文本框位于一Page(使用的是Frame导航控件)内,如果内置的数据类型验证提示错误,恰好此时Page需要导航到别的界面(Page),当再次导航到包含该文本框的Page界面时,发现文本框内数据是合法数据,但错误提示却一直存在,此时即使输入合法数据,错误提示“输入格式不正确”却不消失。(之所以问这么多问题,问题就纠结在这里!)