当前位置:编程学习 > asp >>

ASP.NET MVC 音乐商店 - 2.控制器

 

 

在典型的Web 应用中,用户请求的URL 地址通常映射到保存在网站中的文件上,例如,当用户请求/Products.aspx 的时候,或者/Products.php 的时候,很可能是在通过处理Products.aspx 或者Products.php 文件来完成任务。

 

ASP.NET MVC 的处理方式则不同,它没有映射到文件上,相反,将这些URL 地址映射到类的方法上,这些类被称为“控制器”,控制器用来接受HTTP 请求,处理用户的输入,获取或者保存数据,其中的处理方法称为Action,然后将回应发送到客户端,可能是显示了一个HTML 的网页,下载一个文件,重定向到另外一个地址等等。

 

默认的路由配置

 

在新创建的项目中,打开Global.asax.cs 文件,可以看到如下的代码。

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Routing;

 

namespace MvcMusicStore

{

    // 注意: 有关启用IIS6 或IIS7 经典模式的说明,

    // 请访问http://go.microsoft.com/?LinkId=9394801

 

    public class MvcApplication : System.Web.HttpApplication

    {

        public static void RegisterGlobalFilters(GlobalFilterCollection filters)

        {

            filters.Add(new HandleErrorAttribute());

        }

 

        public static void RegisterRoutes(RouteCollection routes)

        {

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 

            routes.MapRoute(

 "Default", // 路由名称

 "{controller}/{action}/{id}", // 带有参数的URL

 new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值

 );

 

        }

 

        // 一般用来进行网站的初始化

        protected void Application_Start()

        {

            System.Data.Entity.Database.SetInitializer(new MvcMusicStore.Models.SampleData());

 

            AreaRegistration.RegisterAllAreas();

 

            RegisterGlobalFilters(GlobalFilters.Filters);

            RegisterRoutes(RouteTable.Routes);

        }

    }

}

 

 

其中RegisterRoutes 方法注册了默认的路由配置,在方法中的routes.MapRoute 语句中,请求地址将会被看成三个部分组成,{controller}/{action}/{id},第一部分称为控制器,如果没有提供的话,默认为Home, 第二部分称为  Action 方法,如果没有提供的话,默认为Index, 第三部分称为id, 通常用来提供数据的标识,没有默认值。这样,当请求/ 地址的时候,系统将会把请求映射到名为Home 的控制器进行处理,调用其中名为Index 的方法处理请求。

 

 

增加 HomeController

我们的应用商店从增加一个首页的控制器开始,使用默认的命名约定,控制器的名称应该以 Controller 作为后缀,我们将这个控制器命名为 HomeController。

在 Controller 文件夹上右击,然后选择“添加”,“控制器(T)…”

\

 

在弹出的对话框中,输入控制器的名字 HomeController,按下“添加”按钮。

\

这样,将会创建一个名为HomeController.cs 的文件,其中的代码如下:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

 

namespace MvcMusinStore.Controllers

{

    public class HomeController : Controller

    {

        //

        // GET: /Home/

 

        public ActionResult Index()

        {

            return View();

        }

 

    }

}为了尽可能地简单,我们让 Index 方法简单地返回一个字符串,这个字符串将作为回应内容直接返回浏览器,我们做下面的两个简单修改。

 

  •  将方法的返回类型修改为string
  •  将返回语句修改为 return "Hello form Home";

这样,我们的方法将会变成如下的内容

	public string Index()
{
    return "Hello form Home";
}

运行程序

现在,可以运行一下了,我们可以启动服务器,使用下面的任何一种方法都可以。

  •   选择“调试”,“启动调试”菜单
  •   点击工具栏上的绿色的箭头按钮
  •   使用键盘快捷方式,F5

 

\

使用上面的任何一种方法都会导致编译项目,启动 Visual Studio 中内建的 ASP.NET 开发服务器.

\

在屏幕的右下角会弹出一个启动 ASP.NET 开发服务器的提示,

Visual Studio 将自动打开一个浏览器窗口,其中的地址指向我们的 Web 服务器,这使得我们可以快速使用我们的程序。

\

Ok, 非常的简单,我们已经创建了一个 Web 站点,写了一个三行的函数,在浏览器中得到了这行文字, 不是很震撼,但这仅仅只是开始。

 

增加StoreController

 

我们已经为站点增加一个简单的HomeController 作为首页,现在,增加另外一个控制器,可以用来浏览我们的音乐商店,我们的商店控制器将要支持三个场景:

 

 列出商店中的唱片的分类

 浏览商店中某个分类中的唱片列表

 显示特定唱片的详细信息

我们从增加一个新的StoreController 开始,先停止刚才的程序,可以直接关闭浏览器,或者也可以在调试菜单中,选择停止调试。

 

现在,增加一个新的StoreController,像在HomeController 中做的一样,我们在Controllers 文件夹上右健,选择“添加”,“控制器”.

 

新的StoreController 控制器中已经包含了Index 方法,我们使用这个方法来实现列出所有分类的列表,我们还会再增加两个额外的方法来实现其他的场景:浏览和明细。

 

这些包含在控制器中的方法,我们称为控制器中的Action,像你在前面看到的,HomeController 中的Index 方法就是一个Action,这些Action 的作用就是处理请求,然后返回对请求的处理结果。

 

对于我们的StoreController ,首先让Index 这个Action 返回一个“Hello” 串,然后,增加两个方法:Browse() 和Detials()

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

 

namespace MvcMusinStore.Controllers

{

 &nbs

补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,