您的位置:首页 > 其它

深入浅出 MVC 数据验证 2.0 [附演示源码]

2010-04-12 03:27 302 查看
上次的文章得到了很多读者的支持,所以感谢一下大家,特别感谢指出不足之处的几位朋友,我在原文中已经进行了修改。

P.S. 图片中的 dozer.net.cn 其实打开后就是我博客园的地址,会自动跳转,这个好记一点

今天在这里给大家介绍一下MVC的数据验证框架。

在1.0版中,很多朋友提出了怎么使用客户端验证,今天找了一些资料,发现了客户端验证的方法。

1、MVC中的数据验证框架有何优点?

在Asp.net时代,或者没有使用MVC的验证框架,一般是在BLL层中进行数据验证,但是BLL层的返回值又只能返回一个东西,比如一个字符串,而实际情况中,数据验证是很复杂的。

这时候,BLL层和网站会分离的不彻底,因为很多代码不得不在网站中写。

而在MVC的数据验证框架中,甚至可以不用BLL层,而在比BLL层更底层的Model层书写数据验证的代码。

并且最后能在网页上显示出来。

此图这就是最后的效果

User

[MetadataType(typeof(UserMetaData))]
public partial class User { }
public class UserMetaData
{
[Required(ErrorMessage = "名字为空")]
[StringLength(10, ErrorMessage = "名字长度不得超过10个字符")]
public string Name { get; set; }

[Required(ErrorMessage = "密码为空")]
[StringLength(20, ErrorMessage = "密码长度不得超过20个字符")]
public string Password { get; set; }

[Required(ErrorMessage = "帐号为空")]
[StringLength(10, ErrorMessage = "帐号长度不得超过10个字符")]
public string Passport { get; set; }
}


这样写好后,便可以在Entity Framework中使用Model验证了

8、如何使用客户端验证

任何平台都可以靠js来实现客户端验证,但是我这里探讨的是MVC的数据验证。

那MVC的客户端数据验证有什么不同呢?

不同之处就在于,你可以不用写一行javascript代码!

下面让我们来实现它

先添加3个javascript文件,请按顺序添加:



然后在View里添加一行代码:(注意要添加在Form前)



注意点:这里,其实是这个函数把Model验证转换成了javascript代码,对!它只能转换Model验证,BLL验证无法转换,因为BLL验证涉及到复杂的代码,不可能全部转换成javascript吧?并且BLL验证很多还需要和数据库交互。

那如果想把BLL验证也做成“客户端”验证怎么办?(只有可能用ajax实现无刷新验证,而不是真正的客户端验证)

目前看来先只能手写了

如有收获,我会继续更新~

9、Ending



演示中的源码(更新至2.0):下载

如果感觉有收获,那就点一下支持吧~

如有疑问或者我文章中有不妥之处,请在下方留言,或者发送邮件到:dozer@dozer.net.cn




本作品采用知识共享署名-非商业性使用 3.0 Unported许可协议进行许可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: