本文作者是Rick Anderson 下面的是原文网址
http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/adding-a-controller
By Rick Anderson, Rick Anderson works as a programmer writer for Microsoft, focusing on ASP.NET MVC, jQuery and Entity Framework. He enjoys working with the top contributors in the ASP.NET MVC forum.
本教程会教你使用微软 Visual Web Developer2010 express2010sp1来建立一个ASP.NETmvc web 应用程序,Visual Web Developer2010 express2010sp1是 Microsoft Visual Studio 的免费版。在开始之前,请确保您已经安装了下面列出的前提条件。您可以通过单击下面的链接来安装所有这些软件: Web 平台安装程序。或者,您可以使用下面的链接单独安装这些系统必备的组件:
(第一个的用处不大,只要有vs2010应该就不用下第一个了,但是第二个是一定要下的,不然后面有一些地方就和教程的界面不一样了,第三个我想说vs2010里没有(至少我这个米有。。。。)
Sql Server Compact 4.0相比3.5版本增强了很多,支持Entity Framework 4.1,对于轻量级应用来讲,使用Sql Server Compact 4.0是个很好的选择,而且部署相当方便,不需要Sql Server Compact 4.0的安装包,仅需要发布相关的dll以及web.config配置即可。
具体看这篇文章
)
如果您使用 Visual Studio 2010 的而不是Visual Web Developer 2010,安装系统必备组件通过单击下面的链接: Visual Studio 2010 的必备组件.
本教程的源代码下载下载 C# 版本。如果您更喜欢 Visual Basic,切换到本教程的Visual Basic 版本。
MVC 代表模型-视图-控制器。MVC 是一种易于架构和维护的开发应用程序的模式。基于 MVC 的应用程序包含:
我们在此教程系列中会覆盖所有这些概念,并向您展示如何使用它们来构建应用程序。
让我们首先创建一个控制器类。在解决方案资源管理器中,右键单击Controllers的文件夹,然后选择添加控制器.
把您的新的控制器命名为"HelloWorldController"。保留空控制器为默认模板,然后单击添加.(在这里要特别注意一定不能把”helloworld“后面的“Controller”丢掉,不然会找不到对应页面的)
注意到在解决方案资源管理器中已创建了一个名为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,它就照做了 !
ASP.NET MVC根据传入的 URL 调用不同的控制器类 (和他们内部不同的操作方法) 。ASP.NET MVC 所使用的默认映射逻辑使用这样的格式来确定哪些代码会被调用:
/[Controller]/[ActionName]/[Parameters]
URL的第一部分确定要执行的控制器类。所以/HelloWorld将映射到HelloWorldController
类。URL的第二部分 确定要执行类里的对应操作方法。所以/HelloWorld/Index会导致HelloWorldController
类执行Index
方法。请注意,我们浏览/HelloWorld时Index
方法将会被默认执行。这是因为如果没有显式指定方法,被命名为Index
的方法是调用控制器的默认方法。
浏览http://localhost:xxxx/HelloWorld/Welcome这个地址。Welcome
方法运行,并返回字符串"This is the Welcome action method..."。默认的 MVC 映射/[Controller]/[ActionName]/[Parameters]
。对此 URL而言,控制器是HelloWorld
,方法是welcome。你还没有使用 URL 的
[Parameters]
部分。
让我们稍微修改一下示例这样就可以将一些参数信息利用 URL 传递到控制器 (例如, /HelloWorld/Welcome?name=Scott&numtimes=4)。更改您的Welcome
方法,使其包括如下所示的两个参数。请注意如果没有给numTimes
参数传递值时该代码使用 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)。在 URL 中您可以尝试为name和
numtimes赋
不同的值 。系统会自动把地址栏中查询字符串里命名的参数映射到您方法中的对应参数上。
在这两个示例中,控制器一直在做 MVC的"VC"部分 — — 那就是视图和控制器的工作。这里的控制器直接返回 HTML。通常你不想让控制器直接返回 HTML。因为那会使编程变得非常棘手。一般来说我们会使用一个单独的视图模板文件来帮助生成 HTML 响应。让我们瞧瞧接下来我们如何实现这个。