今天有时间认真来学习mvc,记录一点基础的知识。

   1. Global.asax.cs文件夹中的一个RegisterRoutes()方法,如下图定义。

 1  public static void RegisterRoutes(RouteCollection routes)
 2         {
 3             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 4 
 5             routes.MapRoute(
 6                 "Default", // 路由名称
 7                 "{controller}/{action}/{id}", // 带有参数的 URL
 8                 new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
 9             );
10 
11         }

    其中id是定义网址路径如何对应MVC参数。

    MapRoute() 方法是定义MVC网址路由最主要的方式。每一特路由都定义了一下3个参数。

  •  路由名称。
  •  对网址路径如何对应到控制器、动作与路由值的设定。
  •  控制器、动作和其他路由值的默认值。

      通过这个默认的MapRoute()方法可以得知,在浏览器地址栏输入"http://localhost/Home/About"时,通过Routing的对应,由于网址路径一部分为"Home/About",所以会对应出"{controller}"为"Home","{action}"为"About"。因此,MVC会先进入"Controllers"目录,找到Home控制器(也就是HomeController.cs文件),然后再找到这个控制器内的About公开方法(Public Method)。这个公开方法就是MVC的Action,也是实际执行网页主要 程序的入口。

      TIP:在定义Routing时,你可能会注意到有一堆大括号"{}"包裹着一个变量,这个变量就是路由变量。在所有路由变量中最重要的就是controller变量和action变量,而且它们必须存在。就算没有设置网址路径,也必须制定路由变量的默认值才能使MVC正常运作。这两个变量在执行MVC动作时,会先被传送到System.Web.Mvc.MvcHandler类中,然后再被传送到DefaultControllerFactory类中,以建立Controller实体并执行制定的Action。其他的路由变量则可以由你自定义,而且也能被适当的用于Action中。

    2.HomeController类的默认内容,如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace MvcApplication1.Controllers
 8 {
 9     [HandleError]
10     public class HomeController : Controller
11     {
12         public ActionResult Index()
13         {
14             ViewData["Message"] = "欢迎使用 ASP.NET MVC!";
15             ViewData["data"] = "小猫咪~ 喵喵~";
16             return View();
17         }
18 
19         public ActionResult About()
20         {
21             return View();
22         }
23     }
24 }

     Controller类在开发的时候必须符合一下规范。

  • 类名称一定要以"Controller"结尾,例如"GuestbookController"代表Guestbook控制器。
  • 继承于Controller基类(或实现IController接口的类)。
  • 类中须包含数个返回值为"ActionResult"的公开方法,这些方法在MVC中称为Action。

     在默认的Index动作中,第一行的"ViewData"表示一个Dictionary对象,可以再View中读取改对象被设定的数据,示例如下:

 ViewData["Message"] = "欢迎使用 ASP.NET MVC!";

 

利用VS功能新建切换至改动作的试图。如图:

我们看到ViewData["Message"]对象被设定对了一个字符串。

而在此试图中通过以下语法将数据读出并显示在网页中。

 

<%: ViewData["Message"] %>

 

TIP: "<%: ViewData["Message"] %>"语法是在Asp.NET 4.0中新增加的。在此之前的版本中,可以用"<% =Html.Encode(ViewData["Message"]) %>"语法替代它。这两种语法输出的结果完全相同。

 

posted on 2012-11-19 16:54  Eleanore Lee  阅读(521)  评论(0编辑  收藏  举报