当前位置:
首页 > 网站开发 > 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映射将在后面的小结中讲解。
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式