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 类中作判断
?
相关文章推荐
- ASP.NET网站开发——LINQ to SQL 类动态数据支持
- 地磅称量系统之(55) 扩展LINQ to SQL Classes将数据表映射成对象后不具有的验证规则
- ASP.NET网站开发--LINQ to SQL-动态数据支持
- ASP.NET网站开发——LINQ TO SQL 动态数据支持
- Asp.net网站开发(一)LINQ TO SQL 之动态数据支持
- mvc Linq TO sql 数据模型添加标记进行模型验证
- ASP.NET网站开发中的LINQ to SQL与数据上下文
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- 强大的DataGrid组件[3]_数据交互之Linq to SQL——Silverlight学习笔记[11]
- Linq to SQL - N 层应用程序中的数据检索和 CUD 操作
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据 (转)
- 扩展LINQ to SQL:使用Lambda Expression批量删除数据 推荐
- Linq to sql:使用存储过程新增数据
- 步步为营VS 2008 + .NET 3.5(13) - DLINQ(LINQ to SQL)之用户自定义函数、在不同的DataContext之间做更新、缓存、获取信息、数据加载选项和延迟加载
- Linq to SQL 中保存大值数据类型
- [导入]Silverlight 2 (beta1)数据操作(5)——使用LINQ to SQL进行数据CRUD操作(上)
- 【十天学会Linq to sql】第二天—–数据上下文
- DataRabbit 轻量的数据访问框架(14)-- DataRabbit 3.0 与 Linq to sql 性能比较
- Linq to SQL 插入数据时的一个问题
- 使用LINQ to SQL将数据从一个数据库复制到另一个数据库