• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[译]Chapter2-BuildingaSimpleASP.NETMVCApplication

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

原文出处:Chapter 2 - Building a Simple ASP.NET MVC Application

 

在上一章,我们讨论了ASP.NET MVC 框架的崇高目标,在本章中,我们完全忽略它们,我们以最简单的可能方式来构建一个数据库驱动的ASP.NET MVC应用程序。我们忽略设计原则和模式,甚至连简单的单元测试也不会创建。本章的目标就是说明构建ASP.NET MVC应用程序的基本机制。

在本章中,我们构建一个简单的玩具商店程序,我们的程序可以现实一个玩具的列表,并且可以新建玩具。换言之,它可以说明如何构建应用程序,来对数据库执行基本的操作。

*** Begin Note ***

本书的第三部分专门用来讲述如何通过“正确”的方式来构建ASP.NET MVC 程序,我们会利用软件设计原则和模式以及测试驱动来构建一个论坛应用程序。

*** End Note ***

Starting with a Blank Slate

让我们开始创建一个新的ASP.NET MVC 程序,并且移除所有的示例文件。请按照以下步骤新建一个ASP.NET MVC 应用程序工程:

1. 运行Visual Studio 2008

2. 选择File->New Project

3. New Project对话框中,选择你喜欢的编程语言和ASP.NET MVC Web 应用程序模板(参见图1)。

4. 为你的新工程命名为ToyStore,点击OK按钮。

1 – 创建新的ASP.NET MVC工程

当你创建一个新的ASP.NET MVC 工程,会自动出现创建单元测试工程的对话框(参见图2),当被询问是否创建一个单元测试工程时,选择Yes,创建一个测试工程 (通常,你应该总是选择Yes,因为当你创建好ASP.NET MVC 工程后,在条件单元测试工程,会是一个痛苦的过程)

2 – 创建单元测试工程对话框

*** Begin Note ***

当你使用Microsoft Visual Web Developer 创建ASP.NET MVC 工程时,单元测试工程对话框是不会出现的,因为Visual Web Developer 不支持测试工程类型。

*** End Note ***

就像我们在上一章中讨论的那样,当创建一个ASP.NET MVC 应用程序时,你会默认得到几个示例文件。这些文件对我我们构建一个新的应用程序来说,是一个阻碍。请在ASP.NET MVC 工程中删除以下文件:

[C#]

\Controllers\HomeController.cs

\Views\Home\About.aspx

\Views\Home\Index.aspx

[VB]

\Controllers\HomeController.vb

\Views\Home\About.aspx

\Views\Home\Index.aspx

Delete the following file from your Test project.

[C#]

\Controllers\HomeControllerTest.cs

[VB]

\Controllers\HomeControllerTest.vb

*** Begin Tip ***

如果你想总是以一个空的ASP.NET MVC 工程开始,那么在删除示例文件后,你可以创建一个新的Visual Studio工程模板,可以通过选择File->Export Template来创建一个新的工程模板。

*** End Tip ***

Creating the Database

我们需要创建一个数据库和数据库表,来保存我们玩具商店中的玩具列表,ASP.NET MVC 框架和任何当前主流的数据库兼容,包括Oracle 11gMySQLMicrosoft SQL Server

在本书中,我们使用Microsoft SQL Server Express作为我们的数据库。Microsoft SQL Server ExpressMicrosoft SQL Server的一个免费版本,它包含了Microsoft SQL Server完整版本的所有基本功能(使用的数据库引擎是一样的)。

*** Begin Note ***

当你安装Visual Studio或者Visual Web Developer时,可以选择安装Microsoft SQL Server Express(这是一个安装选项)。你可以通过访问以下站点对Microsoft SQL Server Express进行网络安装:http://www.asp.net/downloads/

*** End Note ***

请按照以下步骤在Visual Studio中创建一个新的数据库:

1. 在解决方案窗口的App_Data文件上单击鼠标右键,选择Add->New Items

2. Add New Item对话框中,选择SQL Server Database模板 (参见图3)

3. 为新的数据库命名为ToyStoreDB

4. 点击Add按钮。

3– 添加一个新的SQL Server数据库

在创建完数据库后,你需要创建一个Table,来保存玩具列表。请按照以下步骤创建Products表:

1. App_Data文件夹中双击ToyStoreDB.mdf文件,打开连接ToyStoreDB数据库的Server Explorer 窗口。

2. Tables文件夹上点击鼠标右键,选择Add New Table

3. Table设计器中输入表1所列的所有列(参见图4)。

4. 通过以下方式将Id列设置为Identify列:在Column Properties中展开Identify Specification节点,然后将 Is Identity属性设置为Yes

5. 通过以下方式将Id列设置为主键列:在Table设计器中选择该列,然后点击Set Primary Key 按钮。

6. 通过点击Save按钮保存TableSave the new table by clicking the Save button (一个带有过时的软盘图标的按钮)

7. Choose Name 对话框中,输入名称 Products

1 – Products表中的列

列名

数据类型

是否允许为空

Id

Int

False

Name

Nvarchar(100)

False

Description

nvarchar(MAX)

False

Price

money

False

 

4 – 创建Products

*** Begin Note ***

Visual Web Developer中,服务器浏览器被称为数据库浏览器。

*** End Note ***

在完成Products表的创建后,你应该向其中插入一些数据。在服务器窗口中右键单击Products表,选择Show Table Data,输入两三条产品信息(参见图5)。

5 – Products表中输入示例数据

Creating the Model

ASP.NET MVC程序中,我们需要创建模型类来表示数据库中的表,创建模型类最容易的方法就是利用ORM,自动的从数据库中生成模型类。

你可以将你喜欢的ORMASP.NET MVC 框架合在一起使用,ASP.NET MVC 框剪并没有和任何ORM绑定在一起。例如,ASP.NET MVCMicrosoft LINQ to SQLNHibernate以及Microsoft Entity框架都兼容。

在本书中,我们使用Microsoft Entity框架来生成我们的模型类,我们关注Microsoft Entity框架是因为这个框架啊是Microsoft在数据访问解决方案方面推荐的框架。

*** Begin Note ***

为了使用Microsoft Entity框架,你需要安装.NET Framework 3.5 SP1

*** End Note ***

请按照以下步骤生成数据模型类:

1. 在解决方案窗口的Models文件夹上右键点击鼠标,选择 Add->New Item

2. 选择Data种类和ADO.NET Entity Data Model 模板 (参见图6)

3. 将数据模型命名为ToyStoreDataModel.edmx,点击Add按钮。

6 – 添加ADO.NET Entity数据模型类

在完成以上步骤后,会运行Entity模型数据向导。完成以下这些向导步骤:

1. Choose Model Contents步骤, 选择Generate from database

2. Choose Your Data Connection步骤, 选择ToyStoreDB.mdf数据连接,将实体连接命名为ToyStoreDBEntities (参见图7)

3. Choose Your Database Objects步骤, 选择Products表,并输入模型类的命名空间 (参见图8)

4. 点击Finish按钮,完成向导。

7 – 选择数据连接

Figure 8 – 输入模型类的命名空间

在完成Entity数据模型向导后,可以看到Entity设计器,设计器中只带了一个名为Products的实体(参见图9)。Entity框架已经生成了一个名为Products的类,用来表示数据库中的Products表。

大部分情况下,你会想重命名通过Entity框架生成的模型类,Entity框架简单的将实体的名字命名为数据苦衷对应的表名,因为Products类代表一个特定的产品,你可能想将其名称更改为Products (单数而不是复数)

Entity设计器中右键单击Products实体,选择Rename,输入名称Product

9 – Entity设计器

至此,我们已经成功的创建了模型类。在ASP.NET MVC 程序中,我们可以使用这些类来代表ToyStoreDB数据库中的表。

*** Begin Note ***

在以后,你可以通过双击Models文件夹中的ToyStoreDataModel.edmx 来打开Entity设计器。

*** End Note ***

Creating the Controller

ASP.NET MVC 程序中,控制器控制应用程序执行的流程。被默认出发的控制器名为Home,我们可以通过以下步骤创建Home控制器:

1. Controller文件夹上右键点击鼠标,选择Add Controller

2. Add Controller 对话框中, 输入控制器的名称: HomeController 然后勾选上Add action methods for Create, Update, and Details scenarios (参见图10)

3. 点击Add按钮,创建新的控制器。

10 – 添加新的控制器

Home控制器的内容如列表1所示。

列表1 – Controllers\HomeController.cs [C#]

 

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web;  
using System.Web.Mvc;  
using System.Web.Mvc.Ajax;  
  
namespace ToyStore.Controllers  
{  
    
public class HomeController : Controller  
    {  
        
//  
        
// GET: /Home/  
  
        
public ActionResult Index()  
        {  
            
return View();  
        }  
  
        
//  
        
// GET: /Home/Details/5  
  
        
public ActionResult Details(int id)  
        {  
            
return View();  
        }  
  
        
//  
        
// GET: /Home/Create  
  
        
public ActionResult Create()  
        {  
            
return View();  
        }   
  
        
//  
        
// POST: /Home/Create  
  
        [AcceptVerbs(HttpVerbs.Post)]  
        
public ActionResult Create(FormCollection collection)  
        {  
            
try  
            {  
                
// TODO: Add insert logic here  
  
                
return RedirectToAction("Index");  
            }  
            
catch  
            {  
                
return View();  
            }  
        }  
  
        
//  
        
// GET: /Home/Edit/5  
   
        
public ActionResult Edit(int id)  
        {  
            
return View();  
        }  
  
        
//  
        
// POST: /Home/Edit/5  
  
        [AcceptVerbs(HttpVerbs.Post)]  
        
public ActionResult Edit(int id, FormCollection collection)  
        {  
            
try  
            {  
                
// TODO: Add update logic here  
   
                
return RedirectToAction("Index");  
            }  
            
catch  
            {  
                
return View();  
            }  
        }  
    }  
}  

 

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Mvc.Ajax;

 

namespace ToyStore.Controllers

{

    public class HomeController : Controller

    {

        //

        // GET: /Home/

 

        public ActionResult Index()

        {

            return View();

        }

 

        //

        // GET: /Home/Details/5

 

        public ActionResult Details(int id)

        {

            return View();

        }

 

        //

        // GET: /Home/Create

 

        public ActionResult Create()

        {

            return View();

        }

 

        //

        // POST: /Home/Create

 

        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Create(FormCollection collection)

        {

            try

            {

                // TODO: Add insert logic here

 

                return RedirectToAction("Index");

            }

            catch

            {

                return View();

            }

        }

 

        //

        // GET: /Home/Edit/5

 

        public ActionResult Edit(int id)

        {

            return View();

        }

 

        //

        // POST: /Home/Edit/5

 

        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Edit(int id, FormCollection collection)

        {

            try

            {


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap