`

学习 ASP.NET MVC (第二回)实战篇

阅读更多

上篇简单的了解了ASP.NET MVC的基本概念和基本流程,接下来的几篇将通过简单的实例,来看看如何通过ASP.NET MVC创建应用程序。Demo很简单也很基础,高手绕过。
闲话少说,直接进入正题。首先我们要做的就是安装ASP.NET 1.0。大家可以到CodePlex上下载。
然后我们用VS2008创建新的ASP.NET MVC项目 :

点击确定后,会提示是否创建一个测试项目,点击ok即可。

在解决方案中,我们就可以看到ASP.NET MVC给我们创建的好的模板:

默认情况下:
Controls – 放置 Controller 类,处理 URL 请求。
Models – 放置业务实体类,表示和操作数据。
Views – 放置 UI 模板文件,负责展示输出结果。
Scripts – 放置 Javascript 类库文件和.js 文件。
Contents – 放置 CSS 和图像文件,以及其他非动态的、非 Javascript 文件。
App_Data – 放置数据库文件。
ASP.NET MVC 应用程序不是必须要求这样的目录结构。事实上,大型系统的开发人员通常会将应用程序分为多个项目文件,这样是项目更易于管理(如,数据 Model 类通常在一个单独的类库项目中)。默认的项目结构提供了常规的目录结构,用来保存应用程序更加清晰。
直接运行现有的项目:

当我们点击log on:
http://localhost/:端口号/{控制器名}/{Action方法名}

有个叫Account的Controller,有个叫LogOn的Action。这样就请求了登陆页面:

创建数据库

这里简单的创建一个User表,用来存储用户的信息。向表中添加一些数据。
创建 Model 模型
在 Model-View-Controller 框架中,Model表示应用程序的数据对象,以及相应的业务领域逻辑,包括数据验证和业务规则。Model是 MVC 应用程序的核心部分,下面我们会看到 Model的作用。ASP.NET MVC 框架支持使用任意数据访问技术,开发人员可以选择大量的.NET 数据访问技术实现 Model。这里我们选择LINQ to SQL的方式来实现对数据的访问。
增加LINQ to SQL 类 到项目程序中:在Model文件夹上右键--添加新项:

将User表手动拽到管理器中:

接下来我们就可以利用Linq来对数据库进行操作。我们创建一个UserRepository.cs,封装对User的增加,删除,修改的操作。


namespace UserInfo.Models
{
    
public class UserRepository
     {
        
private UserDataContext db = new UserDataContext();
        
// 查询
         public IQueryable < Users > FindUsers()
         {
            
return db.Users;
         }

        
public Users GetUsers( int id)
         {
            
return db.Users.SingleOrDefault(d => d.UserID == id);
         }

        
// 插入,删除
         public void AddUser(Users user)
         {
             db.Users.InsertOnSubmit(user);
         }
        
public void DelUser(Users user)
         {
             db.Users.DeleteOnSubmit(user);
         }

        
// 更新
         public void SaveUser()
         {
             db.SubmitChanges();
         }
     }
}

Model 类集成验证和业务规则逻辑
项目中我们常常会有业务的验证和业务的逻辑规则,比如不允许用户输入的信息为空之类的,我们在Model文件夹中添加Users.cs。来对User进行验证:


namespace UserInfo.Models
{
    
public partial class Users
     {
        
public bool IsValid
         {
            
get { return (GetRuleViolations().Count() == 0 ); }
         }

        
public IEnumerable < RuleViolation > GetRuleViolations()
         {
            
if (String.IsNullOrEmpty(UserName))
                
yield return new RuleViolation( " 名称不能为空 " , " UserName " );
            
if (String.IsNullOrEmpty(Sex))
                
yield return new RuleViolation( " 性别不能为空 " , " Sex " );
            
if (String.IsNullOrEmpty(Tel))
                
yield return new RuleViolation( " 电话不能为空 " , " Tel " );
            
if (String.IsNullOrEmpty(BirthPlace))
                
yield return new RuleViolation( " 出生地不能为空 " , " BirthPlace " );
            
if (String.IsNullOrEmpty(Company))
                
yield return new RuleViolation( " 工作单位不能为空 " , " Company " );
            
if (String.IsNullOrEmpty(Contact))
                
yield return new RuleViolation( " 联系方式不能为空 " , " Contact " );

            
yield break ;
         }

        
partial void OnValidate(ChangeAction action)
         {
            
if ( ! IsValid)
             {
                
throw new ApplicationException( " 处罚规则 " );
             }
         }
     }

    
public class RuleViolation
     {
        
public string ErrorMessage { get ; private set ; }
        
public string PropertyName { get ; private set ; }
        
public RuleViolation( string errorMessage, string propertyName)
         {
             ErrorMessage
= errorMessage;
             PropertyName
= propertyName;
         }
     }
}

这里有几点值得注意:
我们直接对 Users模型类公开 IsValid 属性和GetRuleViolations() 方法,IsValid 属性根据验证和业务规则返回 true 或 false,GetRuleViolations() 则返回
所有错误的业务逻辑列表。
我们将class 定义为Partial 到项目中,来实现 IsValid 和 GetRuleViolations()方法。Partial 类用来增加方法/属性/事件到 VS 设计器生成的类中(如 LINQ to SQL 设计器生成的 Users类),有助于区分我们编写的代码。
这里,我们使用 C#的 yield return 特性,返回有序的 RuleViolation 集合。
yield return 语句返回集合的一个元素,并移动到下一个元素上。yield break 可停止迭代。包含 yield 语句的方法或属性也称为迭代块。迭代块必须声明为返回 IEnumerator 或 IEnumerable 接口。这个块可以包含多个 yield return 语句或 yield break 语句,但不能包含 return 语句。
当然这里只是简单的进行数据的验证。
到这里,我们就基本上对Users的Model的编写就基本的完成了。
ok,先在这里,下篇待续。

分享到:
评论

相关推荐

    ASP.NET 3.5 MVC 架构与事件源代码第 三部分实战篇

    ASP.NET 3.5 MVC(Model...通过这个实战篇的学习,你将能够熟练掌握ASP.NET 3.5 MVC架构,运用其核心特性构建高效、可维护的Web应用程序。实践是检验真理的唯一标准,所以请动手尝试,通过实际项目来巩固这些理论知识。

    ASP.NET3.5MVC架构与实战

    在实战篇中,采用ASP.NET3.5技术,基于多层架构实现了原创的ASP.NET3.5MVC博客网站,便于初学者学习、运用ASP.NET3.5MVC技术。 目录 第3篇 实战篇 第19章 多层架构的博客网站 第20章 博客网站页面总体设计 第22章...

    《精通Asp.Net MVC 第五版英文版》

    除了理论知识外,《精通Asp.Net MVC 第五版英文版》还可能涵盖了一些实战应用技巧,比如如何利用NuGet包管理器安装第三方库,如何通过Web API实现RESTful服务,以及如何部署应用程序到IIS等。这些技巧对于实际项目...

    ASP.NET MVC5 编程实战

    ASP.NET MVC5 是微软开发的一款用于构建Web应用程序的框架,它结合了ASP.NET Web Forms、MVC(模型-视图-控制器)模式和Web API,为开发者提供了强大的工具和灵活性。在ASP.NET MVC5中,我们可以利用C#编程语言进行...

    ASP.NET+MVC5+编程实战

    本教程“ASP.NET+MVC5+编程实战”将深入讲解这两个技术的结合应用,旨在帮助开发者掌握实际开发技能。 1. **ASP.NET概述** ASP.NET是.NET Framework的一部分,提供了丰富的工具和库,支持多种Web开发模式,如Web ...

    ASP.NET MVC 4 in Action

    #### 二、ASP.NET MVC 4特性 **ASP.NET MVC 4**是该系列的最新版本之一,相比于之前的版本具有以下显著改进: - **支持移动设备**:新增了对移动浏览器的支持,使得开发者可以更容易地创建适应不同设备的应用程序。 ...

    ASP.net MVC SportsStore项目开发六

    ASP.NET MVC SportsStore项目开发是学习和掌握ASP.NET MVC框架的一个典型实例,它涵盖了Web应用程序设计的多个核心概念。在项目开发的第六阶段,我们将关注的是应用的安全性和项目的收尾工作,这些都是确保软件质量...

    asp.net MVC电商商城项目.rar

    ASP.NET MVC是一个强大的...通过分析这个“asp.net MVC电商商城项目”,开发者可以深入理解ASP.NET MVC的实战应用,提升Web开发技能。版权说明文档可能包含了关于项目使用的许可信息和限制,务必阅读以确保合法使用。

    ASP.NET+MVC4+Web+编程.pdf(附带源码))

    7. **学习资源**:"ASP.NET+MVC4+Web+编程.pdf"这本书可能是详细讲解ASP.NET MVC4开发的教程,涵盖Web编程基础、MVC框架详解、实战案例等内容,帮助读者从零开始掌握这一技术。 8. **解压密码和下载说明**:通常,...

    ASP.NET MVC 5 with Bootstrap and Knockout

    第2章Bootstrap介绍 默认菜单 含有下拉列表和搜索框的菜单 按钮 警告框 主题 小结 第3章Knockout.js介绍 安装Knockout.js 基本示例 何为MVVM? 创建ViewModel 小结 第4章数据库应用 Entity Framework...

    使用ASP.NET MVC开发企业级应用网站源码及数据库

    通过研究这个项目,开发者可以学习到如何组织大型ASP.NET MVC项目,理解如何将业务逻辑与UI分离,以及如何有效地管理数据库交互。同时,它也可以作为练习单元测试、集成测试和持续集成/持续部署(CI/CD)的好素材。...

    ASP,NET MVC2开发实战(书籍+源码)

    书中可能还涵盖了使用NuGet包管理器来安装和管理第三方库,以及如何部署ASP.NET MVC2应用到IIS服务器。 源码部分将提供实际项目的实例,这将帮助你将理论知识转化为实践技能。你可以跟随源码一步步实现功能,调试...

    Professional ASP.NET MVC 1.0.pdf Book

    此外,书中还包含了其他相关的ASP.NET MVC电子书籍资源推荐,比如《ASP.NET 3.5 MVC体验与实战》,为读者提供了更丰富的学习资料。 #### 二、主要内容 1. **第一章:ASP.NET MVC框架简介** - **框架概述**:介绍...

    asp.net 中MVC的使用毕业论文

    2. 创建第一个ASP.NET MVC项目,包括项目结构、配置文件的设置。 3. MVC组件的详细解释,如控制器、视图、模型、路由等。 4. 数据访问层的实现,如使用ADO.NET或Entity Framework。 5. 视图模板和视图数据的使用,...

    ASP.NET 3.5 MVC体验与实战

    ### ASP.NET 3.5 MVC中的GridView控件开发 #### 一、自定义GridView控件开发 在ASP.NET 3.5 MVC框架中,开发者可以根据实际需求创建自定义的GridView控件,这些控件通常用于展示数据库中的数据,并提供如排序、...

    C# aps.net MVC web微信三方扫码登录与授权登录

    【C# ASP.NET MVC Web微信三方扫码登录与授权登录】是一个关于使用C#编程...通过这个项目,开发者可以深入了解C# ASP.NET MVC框架与微信API的结合,提升在Web开发中的实战能力,同时掌握第三方登录服务的设计与实现。

    asp.net典型模块与项目实战大全

    2. **第26章** - 可能涵盖了ASP.NET的安全性与身份验证,比如Windows身份验证、Forms身份验证、基于角色的授权,以及如何防止SQL注入和跨站脚本攻击(XSS)。 3. **第15章** - 可能讨论了ASP.NET的缓存策略,如...

    最终版Pro.ASP.NET.MVC.3.Framework(3rd Edition)

    - **创建第一个 MVC 应用**:通过创建一个简单的 ASP.NET MVC 应用,理解基本的工作流和目录结构。 - **理解 MVC 模式**:深入探讨 MVC 模式是如何运作的,包括各部分之间的交互方式。 - **掌握关键语言特性**:学习...

Global site tag (gtag.js) - Google Analytics