原址:http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/getting-started-with-mvc3-part2-cs
这个教程将会使用Microsoft Visual Web Developer 2010 Express Service Pack 1来教会您构建一个基于ASP.NET MVC Web应用。 在您开始之前,请确保已经安装了下面罗列的必备条件。您可以点击接下来的链接来下载它们:Web Platform Installer。或者您可以使用下面的链接来单个安装:
- Visual Studio Web Developer Express SP1 prerequisites
- ASP.NET MVC 3 Tools Update
- SQL Server Compact 4.0(runtime + tools support)
如果您使用的是Visual Studio 2010, 可以点击接下来的链接来安装这些必备条件: Visual Studio 2010 prerequisites.
在这个Visual Web Developer项目中将会全程使用c#. Download the C# version.。如果您比较擅长VB, 可以在这个教程中改为VB Visual Basic version
MVC的标准是模型(model)-视图(view)-控制器(controller)。 MVC是让应用保持很好架构的设计模式。 基于MVC应用的结构包含:
- 控制器(Controllers):把请求引入到应用的类,返回模型(model)数据,然后指定视图(view)模板,把响应返回给客户端。.
- 模型(Models):代表应用中数据的类,验证数据并执行相应的业务逻辑。
- 视图(Views): 应用中使用的模板文件,用来动态的生成HTML响应。
我们将会在这个系列指导中灌输所有概念, 以帮助您使用这些内容构建一个应用。
让我们开始创建一个控制器(controller) 类。在Solution Explorer中,右击 Controllers文件夹并选择Add Controller。
您的控制器(controller)名称命名为 "HelloWorldController"。在Template选项中选择Empty controller并单击Add。
注意到,在Solution Explorer中创建了一个新的文件,命名为 HelloWorldController.cs,并且在IDE中被打开。
在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...";
}
}
}
您的控制器(controller)已被命名为HelloWorldController
并且下面的第一个方法被命名为Index,
我们来从一个浏览器中调用它, 运行应用(按 F5 或 Ctrl+F5).。在浏览器中, 追加"HelloWorld"到地址栏中。 (例如, 在下面的图中,是http://localhost:43246/HelloWorld.)浏览器中的页面看上去就像下面的截图。 在上面的方法中,直接返回了字符串。你告诉系统仅仅返回一些HTML,并且它做到了。
ASP.NET MVC 根据传入的url调用了不同的controller类 (和它们中不同的方法) 。ASP.NET MVC 默认的映射逻辑是使用下面的规则,去决定调用什么代码:
/[Controller]/[ActionName]/[Parameters]
Url的第一段表明了要匹配一个控制器(Controller)类。因此/HelloWorld匹配 HelloWorldController类。
Url的第二段表明了要匹配一个action方法。 因此/HelloWorld/Index 会引起HelloWorldController
中的Index方法被执行,注意,我们仅仅执行/HelloWorld就可以达到同样的目的,因为Index方法会被默认执行。
浏览http://localhost:xxxx/HelloWorld/Welcome. Welcome
方法被执行并且返回字符串 "This is the Welcome action method..."。这个默认的MVC映射是/[Controller]/[ActionName]/[Parameters]。在这个Url中
, controller是HelloWorld,而
Welcome是
action方法。在这个Url中您没有用到参数。
让我们稍微的修改一下这个列子,这样您就能在上面的Url中输入参数信息,去执行相应的控制器(Controller)(例如, /HelloWorld/Welcome?name=Scott&numtimes=4)。像下面一样,改动一下您的Welcome
方法,包含一些参数。 注意下面得代码使用了C#4.0中的“可选参数”特性, 这就意味着numTimes在没有输入值的时候,默认是1.
public stringWelcome(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输入不同的值
。 系统会自动的把地址栏中查询字符串中的参数映射到您方法中对应的参数。
上面的两个例子的控制器(Controller) 包含了MVC中"VC"要做的事情— 这里指的是,视图( view)和控制器(controller)工作的事。控制器(Controller) 直接返回HTML。 通常你不想控制器(Controller) 直接返回HTML, 这样会让代码变得很杂乱并且难以管理。 我们通常会使用分离的视图(view)模板文件来代替生成HTML响应。下一节我将会讲解这个如何实现。