VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 网站开发 > ASP.net 4.0教程 >
  • asp.net教程之ASP.NET MVC工作原理

ASP.NET MVC工作原理

正如上一节中讲解的ASP.NET MVC工作流程,在ASP.NET MVC应用程序中,系统默认创建了相应的文件夹进行不同层次的开发,在ASP.NET MVC应用程序的运行过程中,同样请求会发送到Controllers中,这样就对应了ASP.NET MVC应用程序中的Controllers文件夹,Controllers只负责数据的读取和页面逻辑的处理。在Controllers读取数据时,需要通过Models中的LINQ to SQL从数据中读取相应的信息,读取数据完毕后,Controllers再将数据和Controller整合并提交到Views视图中,整合后的页面将通过浏览器呈现在用户面前。
当用户访问http://localhost:2448/Home/About页面时,首先这个请求会发送到Controllers中,Controllers通过Global.ascx文件中的路由设置进行相应的URL映射,Global.ascx文件相应代码如下所示。
        public static void RegisterRoutes(RouteCollection routes)                                                 //注册路由
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "Default",
                "{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = "" }                                             //配置路由
            );
        }
上述代码中实现了映射操作,具体是如何实现可以先无需关心,首先需要看看Controllers文件夹内的文件,以及Views文件夹的文件,如图17-13所示。

图17-13  Controller文件夹和Views文件夹
从图17-13中可以看出,在Views中包含Home文件夹,在Home文件夹中存在About.aspx和Index.aspx文件,而同样在Controllers文件夹中包含与Home文件夹同名的HomeController.cs文件。当用户访问http://localhost:2448/Home/About路径时,首先该路径请求会传送到Controller中。
注意:在Controllers文件夹中创建HomeController.cs文件同Home是同名文件,在Controllers中创建的文件,其文件名后的Controller.cs是不能更改的,所以HomeController.cs文件也可以看做是Home文件夹的同名文件。
在Controller中,Controller通过Global.ascx文件和相应的编程实现路径的映射,示例代码如下所示。
    [HandleError]
    public class HomeController : Controller
    {
        public ActionResult About()                                                                                                       //实现About页面
        {
            ViewData["Title"] = "About Page";
            return View();                                                                                                              //返回视图
        }
    }
上述代码实现了About页面的页面呈现,在运行相应的方法后会返回一个View,这里默认返回的是与Home的About方法同名的页面,这里是about.aspx,about.aspx页面代码如下所示。
<%@ Page
    Language="C#"
    MasterPageFile="~/Views/Shared/Site.Master"
    AutoEventWireup="true" CodeBehind="About.aspx.cs" Inherits="_17_1.Views.Home.About" %>
    <asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server">
        <h2>About Us</h2>
        <p>
            TODO: Put <em>about</em> content here.
        </p>
    </asp:Content>
将about.aspx页面中的文字进行相应的更改,示例代码如下所示。
<asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server">
    <h2>About Us</h2>
    <p>
        <span style=”color:red”>这是一个关于页面</span>
    </p>
</asp:Content>
运行about.aspx页面,运行后如图17-14所示。

图17-14  修改后的About Us页面
从上述代码可以看出,Controllers与Global.ascx用于URL的映射,而Views用于页面的呈现。从这里可以看出,当用户访问http://localhost:2448/Home/About页面时,访问的并不是服务器中的/Home/About页面,而访问的是Controllers中的HomeControllers的About方法。
注意:ASP.NET MVC应用程序中的URL路径访问的并不是一个页面,而是一个方法,例如访问/Home/About页面就是访问的是HomeControllers中的About方法,而访问/Account/Login页面就是访问的是AccountControllers中的Login方法。
在ASP.NET MVC应用程序中,ASP.NET MVC应用程序的对应关系如图17-15所示。

图17-15  ASP.NET MVC应用程序关系图
在ASP.NET MVC应用程序中,HomeController.cs对应Views的Home文件夹,而其中的Index方法和About方法对应Index.aspx文件和About.aspx文件。
注意:在命名时,默认情况下XXXController.cs对应Views的XXX文件夹,而其中XXXController.cs中的YYY()方法对应XXX文件夹中的YYY.aspx,而访问路径为XXX/YYY是访问的是XXXController.cs中的YYY()方法。
实现相应的URL映射需要通过修改Global.ascx文件进行实现,如何通过修改Global.ascx文件进行不同的URL映射将在后面的小结中讲解。

相关教程