Linq to SQL加注Data Annotation在Asp.Net MVC2中的应用

一.写作前提

最近正在做一个Asp.Net MVC2的Project,用到了Linq to SQL,但是对于如何在MVC2中使用 Linq to SQL 生成的强类型加注Data Annotation,我们都知道在MVC2中我们可以定义自己的Model,然后给Model 加Data Annotation,从而在View中可以实现完美的Client Validation(这些Data Annotation也我们也可 以去自己定义)。但是对于Linq to SQL 生成的强类型,我们有两个问题,第一,应该如何实现它的Data Annotation;第二,当我们的Database结构发生改变时,我们通常需要把Linq to SQL里相应的对象先删 除,然后再重新映射,这时我们如何保证我们加的Data Annotation只需要进行最小的改动就可以完成对 新映射的支持?

下面我们就上面的问题进行分析和提出我们的解决方案。

二.通常MVC的做法

首先我们来做一个比较,自定义Model加Annotation,如表1所示:

图表1:Product Class 的定义

1 public class Product
2 {
3   [DisplayName("Product Name")]
4    [Required(ErrorMessage="Product Name is Required.")]
5   [StringLength (50,ErrorMessage="Max Length of Product Name can not greater than 50  characters.")]
6     public string Name
7     {
8        get;
9       set;
10     }
11
12   [DisplayName("Product  Type")]
13   [Required(ErrorMessage = "Product Type is Required.")]
14    [StringLength(20, ErrorMessage = "Max Length of Product Name can not greater than  20 characters.")]
15   public string Type
16   {
17     get;
18      set;
19   }
20 }

时间: 2025-01-05 13:57:03

Linq to SQL加注Data Annotation在Asp.Net MVC2中的应用的相关文章

Asp.net MVC2中你必须知道的扩展点(一):Controller Factory

Asp.net mvc2中提供很多可以扩展的地方,利用这些扩展之后,asp.net mvc使用起来更加灵活. Simone Chiaretta曾写过一篇文章:13 ASP.NET MVC extensibility points you have to know.文章中 概括性的介绍了13个asp.net mvc开发人员必须知道的扩展点.我将从这13个扩展点中挑选几个常见的重 要的扩展点进行详细的介绍.这篇将文章将首先介绍Controller Factory. Controller Factor

一起谈.NET技术,ASP.NET MVC2中Controller向View传递数据的三种方式

在Asp.net mvc开发中,Controller需要向View提供Model,然后View将此Model渲染成HTML.这篇文章介绍三种由Controller向View传递数据的方式,实现一个DropDownList的显示. 第一种:ViewData ViewData是一个Dictionary.使用非常简单,看下面代码: public ActionResult ViewDataWay(int id){ Book book =bookRepository.GetBook(id); ViewDa

Asp.net Mvc2中重构View的三种方式

我们在Asp.net mvc的view开发过程中,如果不注意可能会写大量的重复的代 码.这篇文章介绍3种方式重构View的代码,来减少View中的重复代码. 1.母板页 在Asp.net mvc中保留了母板页的使用,我们可以使用母板页对我们的站点进 行布局.看下面母板页的代码: <%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> <!DOCTYPE html PU

Asp.net MVC2中你必须知道的扩展点(二):Model Binder

Model Binder在Asp.net MVC中非常简单.简单的说就是你控制器中的Action方法需要参数数据:而这 些参数数据包含在HTTP请求中, 包括表单上的Value和URL中的参数等.而ModelBinder的功能就是将这些个表单上的Value和URL中的参 数换成对象,然后将这些对象绑定 到Action的参数上面.我简单的画了一个图,看起来会更加直观. 在asp.net mvc中你可以写类似下面这样的代码: [HttpPost] public ActionResult Create

ASP.NET MVC2中Controller向View传递数据的三种方式

在Asp.net mvc开发中,Controller需要向View提供Model,然后View将此 Model渲染成HTML.这篇文章介绍三种由Controller向View传递数据的方式,实现 一个DropDownList的显示. 第一种:ViewData ViewData是一个Dictionary.使用非常简单,看下面代码: 1 public ActionResult ViewDataWay(int id) 2 { 3 Book book =bookRepository.GetBook(id

LINQ To SQL在N层应用程序中的CUD操作、批量删除、批量更新

原文:LINQ To SQL在N层应用程序中的CUD操作.批量删除.批量更新 0. 说明     Linq to Sql,以下简称L2S.    以下文中所指的两层和三层结构,分别如下图所示:       准确的说,这里的分层并不是特别明确:(1) 生成的DataContext(Linq t0 SQL Runtime)和Entity是放在一个文件中的,物理上不能切割开来:上图只是展示逻辑上的结构.(2) 拿上图右边的三层结构来说,鉴于第(1)点,UI层就可以跨越BusinessLogic层,直接

一起谈.NET技术,ASP.NET MVC中的Json Binding和Validate

电子商务网站支付功能页面往往会有很多信息,对于这些信息的保存,往往是分步完成的,那么使用Ajax最合适不过了,比如其中的收货人信息模块.这些信息的新建和编辑保存都是用Ajax来完成的.那么有几种方式完成这个操作呢,我想到如下几种. 先来看看该功能的截图: 一般情况下这些信息会对应一个实体类,就命名为:ReceiverInfo,简单起见,我定义ReceiverInfo如下: 1.将需要的值拼接成json文本,再Action里面处理 首先您需要将要保存的值拼接成一个json文本,类似: var te

ASP.NET MVC中的Json “.NET研究”Binding和Validate

电子商务网站支付功能页面往往会有很多信息,对于这些信息的保存,往往是分步完成的,那么使用Ajax最合适不过了,比如其中的收货人信息模块.这些信息的新建和编辑保存都是用Ajax来完成的.那么有几种方式完成这个操作呢,我想到如下几种. 先来看看该功能的截图: 一般情况下这些信息会对应一个实体类,就命名为:ReceiverInfo,简单起见,我定义ReceiverInfo如下: 1.将需要的值拼接成json文本,再Action里面处理 首先您需要将要保存的值拼接成一个json文本,类似: var te

十步教你ASP.NET MVC2项目升级MVC 3 RC

微软在10号发布了ASP.NET MVC3的发布候选版(RC:Release-candidate),该版本提供了Razor视图引擎的智能感知等功能,并同样具备Online许可.眼馋的同学是不是已经迫不及待的想将现有项目升级呢?这里我就将官方ReleaseNotes中的升级办法翻译总结一下,以方便那些不喜欢看罗里嗦的英文文档的广大同学. 译文 要将现有的ASP.NET MVC2项目手动升级到ASP.NET MVC3(RC),我们需要如下这些步骤: 1. 随便创建一个新的ASP.NET MVC3项目