初学ASP.NET MVC,通过博客来记录自己的学习笔记!
创建一个新的 ASP.NET MVC 项目
在新建项目中选择 ASP.NET MVC4 Web Application,项目类型为空,视图引擎为Razor。
- 在visual studio 2012 中即支持MVC4,也同样支持MVC3,因此我们可以看到就得模板在新的版本中同样适用。当我们创建一个新的项目的时候,一定要选择正确的项目类型。
-
我们可以在一个下拉列表中选择项目的视图引擎。在MVC3模板中,微软引进了一种新的视图引擎叫做Razor,在以后的项目中都是使用的Razor这种视图引擎,我希望你也是这样,但是如果你继续希望使用ASP.NET视图引擎(同时称为ASPX引擎),我们可以在这个地方进行选择。在以后的章节中我们将会讲解Razor引擎好人视图引擎的作用。
第一次在Visual Studio中创建MVC项目时,在解决方案管理器中我们将会看到一些文件和文件夹,这是MVC4项目的默认结构。我们可以尝试运行这个项目,我们可以看到一个404 Not Found 错误,因为我们运行了一个空的项目模板,这个程序没有包含任何可以运行的程序。
Visual Studio可以打开浏览器运行我们的项目,同时我们也可以通过工具栏菜单来改变打开的浏览器。在以后的项目中,我们将会使用Internet Explorer 10浏览器,现在所有的浏览器都是非常好的,但是我们继续使用IE,因为它是安装用户最多的浏览器。
增加第一个控制器(Controller)
在MVC架构中,用户的请求通过Controller来处理,在ASP.NET MVC中,控制器就是C#类(通常继承于 System.Mvc.Controller,这个框架在控制器的基础类中创建)。控制器中的每一个public类型的方法都被称作action method,以为这我们通过一些URL来执行其中的一个方法。MVC的规则(convention)是把所有的控制器类放在一个名叫Controllers的文件夹中,这个文件夹是在我们创建这个项目的时候Visual Studio自动为我们创建好的。
为了为我们的项目创建一个控制器,在解决方案管理器中右击Controllers文件夹,在弹出的菜单中选择Add/Controller菜单。
在弹出的Add Controller窗口中输入HomeController。这是另外一个规则:控制器的名字应该分为两部门,第一部分为该控制器的描述,第二部门为Controller,也就是说,控制器的名字应该以Controller结尾。窗口中的Scaffolding options可以让我们使用公共函数的模板来创建一个控制器。现在我们不使用这个功能,因此在Template这个菜单中要确保选择的是Empty MVC controller这一项。点击Add按钮来创建一个新的控制器。
Visual Studio将会在Controllers文件夹下创建一个叫做HomeController的C#代码文件并且已经打开,默认代码如下所示,我们可以看到这个类的名字叫做HomeController并且该类继承于 System.Web.Controller.
The default contents of the HomeController class
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 7 namespace PartyInvites.Controllers 8 { 9 public class HomeController : Controller 10 { 11 public ActionResult Index() 12 { 13 return View(); 14 } 15 } 16 }
初学MVC时一个很好的方法就是修改控制器类中的一些代码。修改HomeController.cs文件中的代码,修改后的代码如下所示:
Modifying the HomeController Class
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace PartyInvites.Controllers { public class HomeController : Controller { public string Index() { return "Hello World"; } } }
我们修改了名为Index的方法,让它返回一个“Hello World”的字符串。重新运行这个项目,浏览器中将会显示Index方法的结果,如下图所示。
理解路由
除了models,views和controllers外,MVC应用程序也使用ASP.NET的路由系统,这个路由系统决定了URLs如何路由到特定的控制器和特定的方法。当Visual Studio创建一个MVC项目,它将添加一些默认的路由让我们运行项目。我们可以用下面URL中的任意一个都将指向HomeController的Index方法:
-
- /
- /Home
- /Home/Index
也就是说,当我们在浏览器中输入的地址为http://yoursit/或者http://yoursite/Home时,它们返回的输出都来自于HomeController的Index方法。我们可以在自己的浏览器中输入不同的URL进行验证。同时,也可以是http://localhost:6130/,其中端口的部分可能不同。如果后面加上/Home或者/Home/Index并且点击返回,我们同样可以看到来自于MVC程序的“Hello World”。
这就是我们根据MVC的惯例做出的一个很好的事例。既然这样,这个惯例就是:我们要创建一个名字为HomeController的控制器,它将成为MVC程序的启动项。我们用Visual Studio创建项目时,默认的路由设置就是根据这个惯例来创建的。由于我们按照根据这个惯例,我们得到了支持上述列表中的URLs。
如果我们不遵循这个惯例,我们可以修改路由设置为我们所创建的控制器。在这个简单的示例中,我们使用的都是默认的配置。
提示:我们可以在Global.asax.cs文件中设置我们的路由信息。
---<本节完>---