首先创建一个控制器来处理有关浏览音乐目录的URL。这个控制器支持以下三个功能:
●索引页面列出商店里包含的音乐类型。
●单击一个流派,跳转到一个列出该流派下所有音乐专辑的页面。
●单击一个专辑,跳转到一个列出有关该专辑所有信息的页面。
1. 创建新控制器
为创建控制器,首先添加一个新的StoreController类。具体方法是:
(1) 右击Solution Explorer下的Controllers文件夹,选择Add | Controller菜单项,如图2-10所示。
(2) 选择MVC 5 Controller-Empty基架模板,如图2-11所示。
(3) 将控制器命名为StoreController,然后单击Add按钮,如图2-12所示。
2. 编写操作方法
新创建的StoreController控制器已经有了一个Index方法,下面将利用这个Index方法实现在页面上列出音乐商店里所有歌曲流派的功能。另外,还需要添加两个额外的方法来实现上述其他两项功能,这两个方法分别是Browse和Details。
控制器中的这些方法(Index、Browse和Details)称为控制器操作。正如上述的Home- Controller.Index()操作方法那样,控制器操作的工作是响应URL请求,执行正确的操作,并向浏览器或是单击这个URL的用户做出响应。
要了解控制器操作的工作原理,可按照以下步骤操作:
(1) 将Index()方法的签名改为string(而不是ActionResult),然后将返回值改为“Hello from Store.Index()”,如下所示:
// // GET: /Store/ public string Index() { return "Hello from Store.Index()"; } (2) 添加对商店的Browse操作方法,将返回值设为“Hello from Store.Browse()”;添加Details操作方法,将返回值设为“Hello from Store.Details()”。控制器StoreController的完整代码如下所示: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcMusicStore.Controllers { public class StoreController : Controller { // // GET: /Store/ public string Index() { return "Hello from Store.Index()"; } // // GET: /Store/Browse public string Browse() { return "Hello from Store.Browse()"; } // // GET: /Store/Details public string Details() { return "Hello from Store.Details()"; } } }
(3) 重新运行项目,然后浏览以下URL:
●/Store
●/Store/Browse
●/Store/Details
访问这些URL会调用控制器中的操作方法,然后返回响应字符串,如图2-13所示。
3. 经验总结
从以上这个简单实验中可以得出以下几个结论:
●不需要做任何额外配置,浏览到/Store/Details就可以执行StoreController类中的Details方法,这就是操作中的路由。本章后面还会对路由稍做介绍,第9章将对此进行详细介绍。
●尽管是使用Visual Studio工具来创建这个控制器类,但它的确是一个非常简单的类。判别一个类是否是控制器类的唯一方式,就是查看该类是否继承自System.Web. Mvc.Controller。
●已经利用一个控制器在浏览器中显示了文本—— 没有用到模型和视图。尽管在ASP.NET MVC中模型和视图非常有用,但控制器才是真正的核心。每一个请求都必须通过控制器处理,然而其中有些请求是不需要模型和视图的。