ASP.NET MVC2.0设计连载

简介:

本篇文章是介绍一下MVC的基本的概念,给初学者做一个入门前的知识储备。
  先讲一下MVC的概念:
  Asp.Net MVC 模式是一种表现模式。它将web应用程序分成三个主要组件即: Model、View、Controller
  (1)下面分别讲M、V、C各自的定位:
  M:Model 主要是存储或者是处理数据的组件
  Model其实是实现业务逻辑层对实体类相应 数据库操作,如:aud。它包括数据、验证规则、数据访问和业务逻辑等应
  用程序信息。
  V:View 是用户接口层组件。主要是将Model中的数据展示给用户
  C: Control 处理用户交互,从model中获取数据并将数据传给指定的view
   (2)Controller与View的职责:
  Controller对象的职责是传递数据,获取View对象(实现了IView接口的类),通知View对象显示.
  View对象的作用是显示.虽然显示的方法RenderView()是由Controller调用的,但是Controller仅仅是一个"指挥官"的作用,
  具体的显示逻辑仍然在View对象中.
   (3)三个组件的依赖关系
  看一幅图:
 
  从图中我们可以了解到:
  View和Controller都可以直接请求Model 但是Model不依赖View和controller
  Controller可以直接请求View来显示具体页面 View不依赖Controller 其实:View可以通过另外的方式来请求Controller
  (4)Url请求的经历的历程
  看下面这幅图,注:这是从苏鹏老师的视频上截取来的!
 
  一个请求过来首先被view捕获,然后传递给routing,routing根据用户的请求解析调用具体的Controller的action。然后 Controller返回一个viewresult给ViewEngine然后写到Response中
   Asp.Net MVC2.0 Url 路由        Url路由是MVC很重要的核心的一部分。不过它是单独于MVC项目,而且没有开源。它作为微软的一个独立的项目抽取了出来,在Asp.Net MVC中只是引用了这个dll。新建一个MVC Web项目,打开Global.asax。我们看到系统帮我们添加了using System.Web.Routing 引用。Routing作为一个单独的dll被我们的项目引用。微软并没有对Routing进行开放源代码。所以:Asp.Net MVC是开源的,但是Routing不是开源的!
  首先讲一下Asp.Net的Url重写技术。一种最简单实现Url重写技术就是在Global.asax文件中
  protected void Application_BeginRequest(object sender, EventArgs e)     {         string originalUrl = Request.Url.PathAndQuery;//获取原先的Url请求(假的请求)       //转化成真的url请求....       HttpContext.Current.RewritePath(newurl);//将针对Url请求交给HttpContext     }

 
  举个例子:一个假的Url地址:http://www.xxx.com/news/sports-2009-1-1-201.html
  看到上面的那个url其实很多情况下那不是一个真正的url,不一定存在sports-2009-1-1.html这么一个html页。我们如果在Application_BeginRequest事件中将这个url重写成这样:
  http://www.xxx.com/news/sports.aspx?date=2009-1-1&id=201 这才是真正的url!     现在开始讲Asp.Net MVC的路由机制,首先要有个观念就是:Asp.Net MVC的url地址是表现的web程序的一个逻辑的结构。新建一个Asp.Net MVC Web项目。然后按F5直接可以运行。页面会自动跳转到http://localhost:端口号/Home/Index页面。玄机还是在Global.asax中。看下面代码:
public static void RegisterRoutes(RouteCollection routes)        {            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");           routes.MapRoute(                "Default"// 路由名称                "{controller}/{action}/{id}"// 带有参数的 URL                new { controller = "Home", action = "Index", id = UrlParameter.Optional },// 参数默认值                new string[] { "MvcDemo.Controllers" }            );
 

   Global.asax中的RegisterRoutes方法中注册了一个名字叫:Default的路由,格式是:http://localhost:端口号/controller/action并添加了这条路由的默认值new { controller = "Home", action = "Index"}。所以我们按F5启动的时候,地址栏是:http://localhost:端口号/这个样子,则匹配到我们的这条路由,并没有具体值,就匹配了我们的默认值。页面会则自动跳转到http://localhost:端口号/Home/Index页面





     本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1360627,如需转载请自行联系原作者





相关文章
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0
|
30天前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
28 0
|
30天前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
95 5
|
3月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
25 0
|
3月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
123 0
|
5月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
51 0
|
8月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
经过一段时间的准备,【ASP.NET Core MVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。
106 0
|
8月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(六)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情,购物车等功能的开发,今天继续讲解订单管理功能开发,仅供学习分享使用,如有不足之处,还请指正。
214 0
|
8月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
114 0