您的位置:首页 > 数据库

Linq TO SQL 开发之数据验证 (整理)

2011-12-06 11:06 441 查看
 

转载地址:http://www.cnblogs.com/test99/articles/1899212.html

很多初学者也可能和我一样用过 Linq + Mvc 来开发。

开发的过程中也许遇到过很多的问题,特别是在没有人指导你的情况下。

这两天 MVC 的数据验证一直困惑着我,到现在为直我只知道把数据验证的代码写到 Model 里,而 在用Linq作底层的时候直接就用设计器来生成 实体类了,那是一个大文件,50多个表代码就达到2W多行。

现在的问题就出来了。

实体类是 Linq 设计器自动生成的,而 MVC 又要把 验证写到实体类里,那怎么办,难道要一个字段一个字段来添加吗? 那显然不对,虽然入行不深,但我感觉上就认为有更好的办法来解决这个问题。

上网找了半天 基本上都是你抄我我抄你,下载了些例子,可那些就只停留在 增删改查,根本就没什么验证代码在里面。

最后在群里问一些高手。得出的解决办法是写“部分类”,虽然 Linq 自动生成的代码我们不好改更不好维护,所以用 “部分类” 是个办法,在我看来现在应该 是最好的办法。

先贴上一篇文章,里面对 MVC 的数据验证讲的很细了

http://www.cnblogs.com/serviceboy/archive/2009/11/28/1612518.html

虽然得到高手的请教,可关键是人家没给代码。 编程这东西如果只是讲讲,那谁都可以是程序员,虽然没有直接代码,但至少知道 google 搜索的方向了。

后来看了一下这位高手的代码才有所觉悟,(汉,人家不贴代码,如果当时没有下载他的源码还真不知道怎么解决我的问题)

http://www.cnblogs.com/ZilchWei/archive/2010/08/11/1797652.html

 

先贴代码

 

?
 
再给力一下,用图说话:
 



除了验证还能做很多事情呢。
这个只是架构的一个小插曲而已。
 

从他的整个源码中可以看出他也是用MVC+Linq 来开发的。最主要的他这里写到了验证。

不必改动 Linq 生成的实体,直接新建一个类来作验证就可以了。

这样的话验证问题就差不多解决了。

因为 MVC 有自动的类型验证工能,不过 提示的信息是 英文的,找了很久,先是在 验证类里 用正则表达式还是不行,提示的还是原来

 

 

的英文

最终把数据类型验证从验证类中删除了,但是找到另一个更好的办法即不用在验证里写正则,也不用多作其它的修改

http://space.cnblogs.com/question/13782/

1、首先添加 App_GlobalResources 文件夹。

2、添加一个资源文件,这里命名为 Message.resx

3、给资源添加键值 PropertyValueInvalid ,值为提示信息。

4、修改 Global.asax Application_Start() 方法,添加代码

DefaultModelBinder.ResourceClassKey = "Message";

ValidationExtensions.ResourceClassKey = "Message";

 

当然 最后还有事要作,自己结的库有50多张表啊,如果这样一个一个写到验证里那不累死,当然这是不可取的。花了些时间写了个 Codesmith 模版让他自动生成了

贴一下模版代码

 

?
 

 

当然为了让验证生效,一定要在 Controller 类中作判断

?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: