65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET MVC3 (第一部分) 基础

2012年3月22日

CPOL

4分钟阅读

viewsIcon

96996

downloadIcon

3654

介绍创建 MVC3 应用程序的基本信息和步骤。

关于本文

本文介绍了 MVC 3 的基础知识、Razor 视图引擎的功能以及自定义辅助类的创建。

引言

我假设读者对 MVC 模式有基本了解(如果不是,请查找 MVC 详细信息的参考链接)。因此,我将不解释 MVC 的基础知识以及 MVC 1、2 的功能。MVC 3 具有许多新功能和改进的功能。本文将通过一个简单的 MVC3 应用程序来解释 Razor 视图引擎的基本概念。

必备组件

  1. VS 2010
  2. MVC 3 框架

MVC3 演示应用程序概述

本文介绍了一个使用 Razor 视图引擎的简单 MVC3 应用程序。该应用程序在网页上显示所有可用产品和选定产品详细信息的列表。该应用程序名为 MVC3Demo。

创建 MVC 3 应用程序

步骤 1

语言 Visual C# 或 Visual Basic
目标框架 .NET Framework 4
已安装模板 Web
模板 ASP.NET MVC 3 Web 应用程序
名称 MVC3Demo

第二步

在“新建项目”窗口中单击“确定”按钮后,将打开 MVC 3 项目模板窗口。

选择包含三个应用程序模板的“模板”部分

  1. Empty
  2. 它会创建一个不带 Controller 和 View 页面的空 MVC 3 项目。但它会创建 CSS、JavaScript (jQuery) 文件和具有空模板的主布局页面。

  3. Internet Application (互联网应用程序)
  4. 它会创建 AccountController、HomeController 和相关的视图,以及用于 Forms 身份验证的代码。

  5. Intranet Application (内联网应用程序)
  6. 与 Internet Application 类似,它会创建基本的 Controller 和相关的代码,并支持 Windows 身份验证。

请选择“Empty Template”(空模板)和“Razor”作为视图引擎;还有一个视图引擎 ASPX(类似于之前的 MVC 版本)。

步骤 3

空模板包含一些基本的文件结构和默认文件。请参见屏幕截图,了解选择空模板时的默认文件。

注意:Razor 视图引擎会为 C# 创建 CSHTML 视图文件扩展名,为 VB 创建 VBHTML 视图文件扩展名。

创建模型

右键单击“Models”文件夹,创建一个类文件ProductModel.cs,并添加一些属性。在此示例中,我创建了 `PrdCode`、`Name` 和 `Price` 作为属性,以及 `GetAProduct` 和 `GetAllProduct` 作为方法。

public class ProductModel
{
    [DisplayName("Product Code")]
    public int PrdCode { get; set; }
    [DisplayName("Title")]
    public String Name { get; set; }
    [DisplayName("Price in $")]
    public double Price { get; set; }

    private IList<productmodel> PRODUCTS
    {
        get
        {
            IList<ProductModel> prs = new List<ProductModel>() 
        { 
            new ProductModel()  { PrdCode =100001, Name ="Baby Product 1", Price =10},
            ...
            ...
            ...
           new ProductModel()  { PrdCode =100020, Name ="Baby Product 20", Price =30}   
        };

            return prs;
        }
    }

    public ProductModel GetAProduct(int prdCode)
    {
        ProductModel prd = PRODUCTS.Where(x => x.PrdCode == prdCode).Single<ProductModel>();

        return prd;
    }

    public IList<ProductModel> GetAllProducts()
    {
        return PRODUCTS;
    }
}

有关详细代码,请参阅附加的项目。

步骤 4

创建控制器

右键单击“controller”文件夹,然后选择“Add->Controller”菜单。

这将带您进入“添加 Controller”窗口,将 Controller 名称重命名为 `ProductController`,然后单击“添加”按钮。

Controller 有三种类型的模板。在此应用程序中,请选择“Empty controller”(空 Controller)。

选择其他模板时,Controller 类将包含一些默认的读/写操作代码。

步骤 5

生成应用程序,并确保没有生成错误。

创建视图 (View)

打开 `ProductController` 类,右键单击 `Index` 方法,然后选择“Add View”菜单。

这将带您进入“添加视图”窗口。

视图名称:保留默认值(Index)

视图引擎:保留默认值(Razor 视图引擎)。它将创建一个名为 Index、扩展名为 .cshtml 的文件。

选择“创建强类型视图”复选框,然后选择“模型类”:ProductModel(在此步骤之前应生成应用程序)。

脚手架模板:Empty,并保留此窗口中所有其他字段的默认值,然后单击“添加”按钮。

这会在“Views”文件夹下创建默认的 Product/Index.cshtml 页面。

Razor 视图引擎语法 – 基础知识

字符“@”

在 HTML 标记中,我们可以使用“@”代替“<% %>”来编写 C# 或 VB 代码。例如:

对于单行 C# 代码 `DateTime.Now`,只需在 HTML 标记中 `DataTime.Now` 前面加上“@”即可。

<p>
    Today: @DateTime.Now
</p>

对于多行代码,`@{……}` 足以指定 C# 代码。

@{
    int i = 0;
    i += 10;
}
Layout.cshtml
  • @RenderBody()
  • 呈现不在任何命名区域内的页面的内容。

  • @RenderSection("mySectionName")
  • 呈现给定名称的区域内容。区域默认是必需的,因此链接到模板的每个页面都必须声明它们。

  • @RenderSection("mySectionName", optional:true)
  • 呈现可选区域的内容。链接到模板的页面可以省略可选区域的定义。

_Layout.cshtml 是此应用程序的主页面,`@RenderBody()` 部分会呈现 index.cshtml 页面的内容。

Index.cshtml

默认情况下,index.cshtml 页面包含以下代码。

@model MVC3Demo.Models.ProductModel
@{
    ViewBag.Title = "Index";
}

页面指令和 `Inherits` 属性等已在此 MVC3 版本中移除。

自定义辅助器

在 Razor 中也可以创建自定义辅助器,要创建自定义辅助器,我们必须遵循以下步骤。

步骤 8

添加新的 App_Code 文件夹,然后右键单击该文件夹。

将打开“添加新项”窗口,选择 MVC3 Partial Page (Razor),并将其命名为 CustomerHelpers.cshtml

CustomerHelper.cshtml 页面中,使用 `@helper methodname() {…..}` 创建自定义辅助器。

@helper ShowTime()
{
    <div>
        Current Time: <strong>@DateTime.Now.ToShortTimeString()</strong>
    </div>
}

然后生成项目,之后可以在视图和布局页面中使用 `@CustomerHelpers.ShowTime()` 方法。

有关 ProductController 和 Index.cshtml 的详细代码,请参阅附件中的应用程序,然后运行该应用程序。

结论

我希望这篇博文能帮助您使用 MVC3 模式创建基本应用程序。

我将在下一篇文章中介绍 MVC3 的其他一些功能。

参考文献

  1. http://msdn.microsoft.com/en-us/library/ff649643.aspx
  2. http://msdn.microsoft.com/en-us/library/dd381412(VS.98).aspx
  3. http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=1491
  4. http://msdn.microsoft.com/en-us/VS2010TrainingCourse_ASPNETMVC3Razor
© . All rights reserved.