MVC学习系列-基础了解

ASP.NET 是一个开发框架,用于通过 HTML、CSS、JavaScript 以及服务器脚本来构建网页和网站。ASP.NET 支持三种开发模式:Web Pages、MVC (Model View Controller) 以及 Web Form。下面首先区别比较一下Web Form 和MVC这两种设计模式,接着进行基础知识的讲解。

一、两种设计模式的区别

1.WebFrom 这种设计模式的实现方式有两种

(1)aspx前端页面+服务器控件(为控件设置事件响应方法)

(2)aspx前端页面+异步+ashx一般处理程序()

两种实现方式各有利弊,在此不累述

总的来说WebFrom 这种设计模式将程序的处理分为前台与后台,前台页面为通过 HTML、CSS、JavaScript 以及服务器脚本构建的网页,为aspx文件。后台代码为aspx.cs文件或一般处理程序,是对应于我们前台页面的代码(由此可知两者之间的耦合性比较强,不利于后期软件变更、维护)。对于初学WebForm的人员,我们常做的就是拖拉服务器控件,之后在为他们添加后台处理代码。

2.MVC设计模式的实现方式是将前台的呈现与后台的控制分离开来(较WebForm有了改进,极大降低了前台和后台的耦合性,有利于后期软件变更、维护),划分为了三个部分:Controller、View、Model  下面为大家详细讲解一下

Controller:控制器。在Contrller文件夹添加的以Controller结尾的类就是控制器,它的每个方法就是一个Action。它的职责是从Model中获取数据,并将数据交给View,它是个指挥家的角色,它并不控制View的显示逻辑,只是将Model的数据交给View,而具体的怎样展示数据那是View的职责,所以Controller跟View是一个弱耦合的状态,而Controller可以任意指定具体的View进行渲染,达到了UI层的代码和实体良好的分离。

View:视图.负责数据的展示,当然这个视图代码的编写应该是更接近纯净的Html的,而View层代码的书写又直接跟视图引擎解析的规则有关(在为Action添加视图时会有一个选项,是选择Razor还是aspx),Razor的语法跟webFrom视图引擎的语法截然不同

Model:很多人把Model理解成领域模型,而MVC本身是一个表现模式,它是更倾向于UI层的一个框架,所以一般我们指定的Model在使用时一般作为ViewModel来用。Model层进行数据库数据的存取,可以使用EF等实体框架进行操作。

3.程序的调试

WebFrom:当我们调试程序时请求的Url是具体的页面,我们可以进行某个页面是首页之类的设置

MVC:当我们调试程序时请求的Url是某个控制器下面的具体的Action,可以通过修改默认路由进行设置

WebForm、MVC这两种设计模式的比较到此结束,也许两者之间还有其他的区别,由于本人也是初学,对此不是很清楚,以后再补充

二、MVC设计模式基础知识

MVC 设计模式总的业务流程如下图所示:

从上面的处理模型可以看出 用户请求的是一个控制器下面的具体的Action。客户端发送一个Http请求,首先被我们的IIS捕获到,然后根据Url请求的格式,最终交给我们的Route组件,然后它负责解析出我们的Url具体请求的是哪个Controller下的哪个Action。然后MVC经过处理调用我们的Action执行。在Action中我们一般会从业务的Model层取出数据然后将传输层的数据转换成ViewModel再交给View的视图引擎渲染,最终生成Html的字节流写回客户端。

Routing的作用:获取到View传过来的Url请求,并解析Url请求中Controller和Action以及数据,然后将识别出来的数据传递给Controller的Action(Controller的方法)。

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters// 设置Url的格式,我们也可以自定义
                new { controller = "Ajax", action = "Index", id = UrlParameter.Optional } // Parameter defaults //默认请求的是Ajax控制器下面的Index方法
            ); //也可以根据需要修改
        }

上面讲解了一些MVC的基础知识,下面会基于MVC进行一些具体项目的练习。

时间: 2024-10-10 20:08:56

MVC学习系列-基础了解的相关文章

ASP.NET MVC学习系列(二)-WebAPI请求

继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax({type:"get"}) 来实现: 请求的后台Action方法仍为上篇文章中的GetU

ASP.NET MVC学习系列(二)-WebAPI请求(转)

转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax

MVC学习系列——ModelBinder扩展

在MVC系统中,我们接受数据,运用的是ModelBinder 的技术. MVC学习系列——ActionResult扩展在这个系列中,我们自定义了XmlResult的返回结果. 那么是不是意味着能POST一个XML数据类型给我们项目,这样的话,我们需要自定义一个XmlModelBinder来接受XML数据. 新建XmlModelBinder,继承于:IModelBinder 1 public class XmlModelBinder : IModelBinder 2 { 3 public obje

MVC学习系列14--Bundling And Minification【捆绑和压缩】--翻译国外大牛的文章

这个系列是,基础学习系列的最后一部分,这里,我打算翻译一篇国外的技术文章结束这个基础部分的学习:后面打算继续写深入学习MVC系列的文章,之所以要写博客,我个人觉得,做技术的,首先得要懂得分享,说不定你自己以为正确的东西,存在瑕疵,分享出来,大家也可以互相进步.这样整个生态圈也会越来越好.不是么?   好了,闲话扯远了,下面开始正题吧,一下是英文和中文对照,翻译的不好,请见谅. This article introduces how to improve ASP.NET MVC Applicati

MVC 学习系列

总是很难说清MVC的概念,即使读了源代码后(读的时候有些东西,理解起来还是有点吃力),也依然能难对整体的每一个具体的原理说的一清二楚.为了达到自己学习的目的,我把自己的学习路线写成文章,一边自己能对MVC有深刻的认识. 尽管也看了一些关于MVC的书籍,但还是很难分清MVP,MVVM,MVC的概念区分,先抛弃之前的概念的区分,先体验后在总结吧. MVC文章系列: 1,)mvc controller控制器

ASP.NET MVC学习系列(一)-WebAPI初探

由于即将要接手的新项目计划用ASP.NET MVC3来开发,所以最近一段时间一直在看相关的书或文章.因为之前在大学里也曾学习过MVC2开发,也做过几个简单的MVC2的小型测试项目,不过在后来工作以后主要还是开发WebForm的项目,所以MVC的东西也就逐渐的淡忘了. 经过这一段时间的系统学习,真的觉得MVC3相比于之前的MVC2还有WebForm来说,确实有一种让人欲罢不能爽歪歪的感觉.特别是Razor语法.Linq表达式等的结合运用. 为了将学习过程中遇到的一些值得留意的问题和知识点进行一个很

WebGL学习系列-基础矩阵变换

前言 在图形学中,特别是涉及到3D的时候,矩阵变换起着非常重要的作用.在实际使用的过程当中,通常每一帧画面可能都会涉及到成千上万个顶点的坐标变换,如果没有矩阵变换计算,一个是计算复杂,一个是难以达到我们想要的计算效率.本小节将介绍通过矩阵计算来实现基本的图形变换. 矩阵 矩阵是一种多个数据集合的表示方式,定义为:由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵.记作: 矩阵的存在主要是由于它的运算,下面来简单看一下: 加法 [2637]+[1324]=[395

MVC学习系列7--下拉框的联动

[使用场景:两个DropDownList的联动,选择其中一个DropDownList,然后加载数据到另外的一个DropDownList上] 这里,我打算实现的需求是:有两个DropDownList,一个默认加载所有的省份数据,然后,当我选择省份的时候,把对应的市的数据,绑定到另外一个DropDownList上面,即实现了联动. 好了,这里不打算使用EF了,换用ADO.NET.首先新建好数据库,表: USE master GO IF EXISTS (SELECT * FROM sysdatabas

MVC学习系列5--Layout布局页和RenderSection的使用

我们开发网站项目的时候,都会遇到这样的问题:就是页面怎么统一风格,有一致的外观,在之前ASP.NET的时代,我们有两种选择,一个是使用MasterPage页,一个是手动,自己在每个页面写CSS样式,但这样代码量太大了..不可取,那么到了ASP.NET MVC时代,有什么技术可以统一页面风格呢???有,那就是Layout布局视图.下面就开始学习吧. 1. 首先使用空模板,新建一个MVC Web项目: 新建完成之后,初始化状态是: 2.接着在根目录[LayoutMVC这里是]下,新建一个文件夹[Co