打开Visual Studio 2010,选择文件,然后选择新建项目,选择左边的VisualC#然后选择ASP.NET MVC 3 Web Application.命名项目为“MvcMovie”,单击“OK”。
在新弹出的 New ASP.NET MVC 3 Project窗口,选择Internet Application.确保Use HTML5 markup并保留Razor作为默认的视图引擎。
单击“Ok”,Visual Studio 已经使用默认模板为您创建一个可以运行的应用程序。这是一个简单的“Hello World!”程序,它是您的一个好的开始。
打开“调试”菜单,选择“开始调试”
您也可以使用快捷键F5开始调试。
Visual Studio启动一个浏览器并打开程序的主页面。注意地址栏的显示的是localhost而不是形如example.com。这是因为localhost总是指向您的本地计算机,在这种情况下它指向您刚才创建的应用程序。当Visual Studio启动一个网络项目时,一个随机的端口被web server使用。
如下图所示,这是随机的数字是43246.当您运行程序时,您可能看到的是一个不同的端口。
MVC代表model-view-controller。MVC对开发应用程序来说,是一种很好的架构和便于维护的模式。基于MVC的程序包含:
控制器:负责处理外部请求,获取模型数据,提取视图模板(负责返回请求给客户端);
模型:代表应用程序的数据并使用验证逻辑去执行数据的业务规则 ;
视图:用来动态生成HTML响应的一些模板文件。
在这个教程里将会包含所有上述概念并告诉您如何去使用他们去创建应用程序。
让我们开始创建一个控制类。在解决方案资源管理器中,右键Controller文件夹并选择添加Controller。
命名新的控制器为“HelloWorldController”。保留默认的模板为 Empty controller 。单击Add。
注意:在解决方案资源管理器中一个新的文件已经被创建,名字为HelloWorldController.cs.文件已经在IDE中打开。
在程序块public class HelloWorldController的内部,创建两个方法,代码如下。作为例子,控制器将返回一个HTML字符串。
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..."; } } }
您的控制器被命名为HelloWorldController并且第一个方法被命名为Index。让我们从浏览器调用它。运行应用程序(按F5或Ctrl+F5)。在浏览器中地址中追加"HelloWorld"。(例如:在下面的插图中,这样写http://localhost:43246/HelloWorld.)
浏览器页面中返回结果如下边屏幕截图。上面的方法中,代码直接放回了字符串。您告诉系统仅仅返回一些HTML,它做到了!
URL的第一部分决定了执行哪个控制器类。所以 /HelloWorld 映射到 HelloWorldController 类。
URL的第二部分决定了执行控制器类中的哪个操作(方法)。所以/HelloWorld/Index 触发了HelloWorldController 类的Index方法。
注意:Index方法被用作默认方法(路由中配置的)。
这就是为什么如果没有明确指定方法时,Index方法将会被调用的原因。
浏览ttp://localhost:xxxx/HelloWorld/Welcome。 Welcome方法返回字符串"This is the Welcome action method...".
MVC默认映射为/[Controller]/[ActionName]/[Parameters].
对于这个URL来说,控制器是HelloWorld,Welcome是响应方法。您不用必须使用[Parameters]。
让我们稍微修改一下以便您可以通过URL传递参数给控制器。(比如,/HelloWorld/Welcome?name=Scott&numtimes=4). 改变Welcome方法,像下面一样添加两个参数。注意,代码中使用C#的可选参数特性指明参数numTimes默认值为1(不传递该参数时)。
public string Welcome(string name, int numTimes = 1) { return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes); }
运行应用程序并浏览URL(http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4).
您可以为name和numtimes多试几次其他的值。系统自动从URL请求字符串中映射到您的方法中相应的参数上。
在这两个例子中控制器已经完成了MVC中的“V和C”,也即是说,视图和控制器已经工作了。控制器直接返回了HTML.通常您不想让控制器直接返回HTML,因为这会变成非常累赘的代码。我们通常使用一个单独的视图模板文件来帮助生成HTML响应。
下一节让我们来看看我们如何能够做到这一点。