一、控制器的角色
MVC模式中的控制器(Controller)主要负责响应用户的输入,并且在响应时通常会修改模型(Model)。通过这种方式,MVC模式中的控制器主要关注的是应用程序流,输入数据的处理,以及对相关视图(View)输出数据的提供。
MVC是基于路由机制的,URL告知路由机制去实例化哪个控制器,调用哪个操作方法,并为该方法提供需要的参数。然后由控制器的方法决定使用哪个视图,并随后对该视图进行渲染。
URL与控制器(controller)类中的某个方法有关。理解MVC模式在Web场景中工作原理的一个好方法就是记住:MVC提供的是方法调用的结果,而不是动态生成的页面。
二、创建第一个非常简单的控制器
1、创建新控制器
首先打开上一张建立的MVC项目,然后在Controller文件夹上右击选择添加--控制器菜单项,如图2-1所示。
图 2-1
将控制器名为DemoController,选择”控制器“一项,如图2-2所示。
图 2-2
2、编写操作方法
在新创建的DemoController控制器已经有了一个Index方法,再在里面添加两个方法,分别为Browse和Details。这些方法在控制器里被称为控制器操作。他们的工作是响应URL请求,根据URL请求执行合适的操作,并向浏览器或者单击这个URL的用户做出响应。下面的操作步骤演示了控制器是如何工作的。
(1)将DemoController中的Index()方法的签名改为String(而不是ActionResult),然后将返回值改为”Hello from demo.Index()",如下所示:
1 public class DemoController : Controller 2 { 3 // 4 // GET: /Demo/ 5 6 // public ActionResult Index() 改为:string 7 public string Index() 8 { 9 //return View(); 改为返回一个字符串。 10 return "Hello from demo.Index()"; 11 } 12 13 }
(2)添加Browse操作方法,将返回值设为“Hello from demo.Browse()",添加Details操作方法,将返回值为"Hello from demo.Details()"。DemoController完整代码如下所示:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 7 namespace MvcApplication1.Controllers 8 { 9 public class DemoController : Controller 10 { 11 // 12 // GET: /Demo/ 13 14 // public ActionResult Index() 改为:string 15 public string Index() 16 { 17 //return View(); 改为返回一个字符串。 18 return "Hello from demo.Index()"; 19 } 20 21 // GET: /Demo/Browse 22 public string Browse() 23 { 24 return "Hello from demo.Browse()"; 25 } 26 27 // GET: /Demo/Details 28 public string Details() 29 { 30 return "Hello from demo.Details()"; 31 } 32 33 } 34 }