By Rick Anderson | August 28, 2012 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-controller
翻译:fxx3344 在 csdn博客
MVC全称为 model-view-controller。MVC 是软件工程中的一种软件架构模式,他易于测试和维护。MVC把软件系统分为三个部分:
- 模型Model:描述程序数据模型的类,以及实施合适的业务规则的类
- 视图View:用于动态的生成Html内容的模板文件
- 控制器Controller:一个类库,用于处理浏览器请求、取得合适的模型数据及使用合适的视图模板生成Html内容
现在,先创建一个控制器类。在解决方案资源管理器中,右键单击 Controllers 文件夹并选择添加 控制器
控制器的名称为“HelloWorldController”。模板使用默认的选项空MVC控制器,单击添加。
可以在解决方案资源管理器中看到,有一个名字为HelloWorldController.cs的文件被创建。此文件已经在工作去被打开。
按照如下方式修改代码。
using System.Web; using System.Web.Mvc; namespace MvcMovie.Controllers { public class HelloWorldController : Controller { // // GET: /HelloWorld/ public string Index() { return "This is my <b>default</b> action..."; } // // GET: /HelloWorld/Welcome/ public string Welcome() { return "This is the Welcome action method..."; } } }
这个控制器 的方法会返回一个字符串,作为Html响应。控制的名字是HelloWorldController,第一个方法是Index。按下F5或Ctrl+F5,运行程序。在浏览器的地址栏中,将“HelloWorld”加在地址的后面。浏览器会呈现下面截图的效果。在这个方法直接返回了一个字符串作为Html响应,就如代码中所写的。
ASP.NET MVC根据接收到的Url调用相应的控制器(以及控制器中相应的方法)。ASP.NET MVC使用如下的规则,判断应该调用那些代码:
/[Controller]/[ActionName]/[Parameters]
第一个节点用于确定控制器。所以/HelloWorld映射到了类HelloWorldController。
第二个节点用于确定被调用的方法。所以/HelloWorld/Index会执行Index方法。需要注意的是,Index可以作为控制器默认的方法被调用;即如果Url的第二个节点空缺,那么Index方法会被使用,正如上面的运行结果一样。
在浏览器中输入http://localhost:xxx/HelloWorld/Welcome,方法Welcome会被调用;在浏览器中会显示一个字符串“This is the Welcome action method...”。
第三个节点是输入的参数值。这里对方法Welcome做一些修改,使他可以接受两个参数输入。ASP.NET MVC model binding system会自动将Url的Query String绑定到对应的方法参数上。
public string Welcome(string name, int numTimes = 1) { return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes); }在地址栏中输入http://localhost:xxx/HelloWorld/Welcome?name=Scott&numtimes=4,显示结果如下
在上面的示例中,控制器行使了 控制器和视图的职责。控制器直接返回了Html代码。一般情况下,控制器不应直接返回Html代码;当界面更加复杂是,你很难写出正确的代码,也很难维护。解决的方式就是使用视图模板来生成Html代码。这将是下一章节的内容。