ASP.NET MVC3学习心得-----入门和控制器

之前有学过ASP.NET MVC 3,但那也只是浮光掠影般的看了看而已,这次专门接了本书,系统的学习下,这里只是摘录总结一些重点而已,并非详细的介绍,算是读书笔记吧,希望可以对大家有所帮助。

第一章入门

1.1.2MVC模式简介

MVC(Model-View-Contorller)模式是一种用户界面模式,将应用程序的用户界面分为三部分:

l 模型:组类,描述要处理的数据以及修改和操作数据的业务规则

l 视图:定义应用程序用户界面的显示方式

l 控制器:一组类,用于处理来自用户、整个应用程序流程及其特定应用程序逻辑的通信

1.1.3 MVC在web框架中的应用

在ASP.NET MVC 中,MVC的三个主要部分的定义如下:

l 模型:描述程序设计人员感兴趣问题域的一些类,这些类通常封装存储在数据中的数据,以及操作这些数据和执行特定域业务逻辑的代码,在ASP.NET中模型相当于用了某个工具的数据访问层,这个工具包括实体框架、特定逻辑自定义代码组合在一起的NHibernate

l 视图:动态生成Html页面的模板

l 控制器:协调视图和模型之间关系的特殊类,响应用户输入,并且和模型对话,在APS.NET MVC中该类通常以Controller表示

ASP.NET 采用了大部分基于MVC的Web框架所使用的一些基本原则:

l 约定优于配置

l 不重复

l 尽量保持可拔插性

l 尽量为开发人员提供帮助,必要时允许开发人员自由发挥

1.1.4ASP.NET MVC3 得到广泛应用原因:

l 友好的视图表达,其中包括新的Razor引擎

l 支持.NET4数据注解

l 改进了模型验证,验证简介高效

l 与依赖项解析(Dependency Resolution)和全局操作(Global Action Filter)过滤器的强关联

l 支持JavaScript,JQuery验证和JSON绑定

l 支持使用NuGet

1.1.5 Razor视图引擎

Razor被专门设计成视图引擎的语法,主要作用:集中生成HTML代码模板

Razor语法设计目标:

l 简洁、富有表现力和灵活性

例如:@foreach(var album in Model.Albums)

{

 <li>

   <a href="@Url.Action("Details",new{id=album.AlbumId})"><span>@album.Title</span></a>

</a>

}

 由标记向代码过渡仅由@字符来表明即可,而代码向标记过渡Razor引擎会自动检测

l 容易学习,当需要编写.NET代码时,输入@符号再输入HTML代码即可

l 支持所有的文本编辑器

l 强大的只能感知功能

l 单元测试:Razor视图引擎核心编译引擎与System.web或者ASP.NET没有任何依赖关系,能执行单元测试,甚至执行命令

1.1.6验证的改善

1、支持.NET4数据注解

l 在.NET框架中System.ComponentModel.DataAnnotations的Display特性可以本地化

l .NET4增加了ValidationAtribute特性更好的与整个模型验证上下文系统工作

2、改进模型验证的简化验证

1.1.7强大的JavaScript支持

1、非入侵式Javascript(不影响网页标记)

链接页面元素是通过元素的ID或类而不是通过事件特性(例如:onclick和onsubmit)

ASP.NET MVC 3采用两种方法支持非侵入式JavaScript

l Ajax辅助类(如:Ajax.ActionLink和Ajax.BeginFrom)结合利用扩展的特性(data-特性)和Jquery技术为Form标签提供简洁的标记

l Ajax验证不再将验证规则以一块发出,而是应用data-特性发出,data-特性的使用时的应用JQuery和其他JavaScript库的验证信息的利用和重用更加简单

2、JQuery验证

3、JSON绑定

通过JsonValueProviderFactory支持JSON(Javascript object Notation)绑定

1.1.8高级特性

1、支持依赖项解析(dependency resolver)

简化了在应用程序中依赖注入的使用,使得分离应用程序组件更加容易,从而使组件更容易配置测试

举例已添加对依赖解析器的支持:

l 控制器(注册和注入控制器工厂,注入控制器)

l 视图(注册和注入视图引擎,向视图页注入依赖关系)

l 操作过滤器(定位和注入过滤器)

l 模型绑定器(注册和注入)

l 模型验证提供器(注册和注入)

l 模型元数据提供器(注册和注入)

l 值提供器(注册和注入)

2、全局操作过滤器

运用于程序中所有操作方法的全局操作过滤器扩展了这一功能(ASP.NET MVC 2中的Attribute)

1.2ASP.NET MVC和约定

在默认的情况下ASP.NET MVC应用程序对约定的依赖性很强

例如:当解析视图模板时,默认情况下,ASP.NET MVC 会在应用程序下\Views\[ContorllerName]\目录中找出视图模板

1、约定优于配置

l 每一个Controller类的名字以Controller结束,且都在Controller文件夹中

l 所有的视图放在一个单独的文件夹Views目录中

l 控制器使用的视图是在Views主目录中的一个子目录中,且这个子目录的名字是根据控制器的名字减去Controller来确定的

2、约定简化通信

编写代码进行通信主要面向两个不同的听众

l 需要清晰无二义性的指令传递给计算机,让它来执行

l 需要让开发人员读懂您的代码,以便后期的维护、调试

 

 

                第二章控制器

2.1控制器的角色

MVC模式中的控制器主要负责相应用户的输入,并且在响应时通常会修改模型(Model)通过这种方式,MVC模式中控制器主要关注的是应用程序流、输入数据的处理,以及对相关试题输出数据的提供

URL不是与存储在Web服务器硬盘上的文件有直接的对应关系,而是与控制器类的一个方法有关。

MVC提供的是方法调用结果,而不是动态生成的页面

2.2控制器中的参数

在ASP.NET MVC的默认路由约定,将操作方法名称后边的URL这个片段作为名称为ID的参数,如果操作方法中有名称为ID的参数,则会自动将这个URL片段作为参数传递过来

如:/Store/Details/5  <=> /Store/Details?id=5

控制器操作的感觉像是web浏览器直接调用控制器类中的方法,类、方法和参数都被具体化为URL中特定的路径片段或查询字符串,结果就是一个返回给浏览器的字符串,这样就忽略了以下细节:

l 路由将URL映射到操作的方式

l 将视图作为模板生成向浏览器返回的字符串

l 操作很少返回原始的字符串,通常返回合适的ActionResult来处理像HTTP状态码和调用视图模板系统这样的事项

 

 

from:http://www.cnblogs.com/Olive116/archive/2012/11/29/2794651.html

时间: 2024-10-25 13:56:32

ASP.NET MVC3学习心得-----入门和控制器的相关文章

ASP.NET MVC3学习心得-----视图和模型

视图 3.1视图的作用 视图的职责是向用户提供用户界面,向它提供对模型的引用后,它会将模型转换为准备提供给用户的格式. 在ASP.NET MVC中这个过程由两部分组成: 检查控制器提交的ViewDataDictionary(通过ViewData属性访问),另一部分是将其内容转换为HTML格式 从ASP.NET MVC 3开始,视图数据可以通过ViewBag属性访问,该属性是动态的,语法简单,可以访问通过ViewData属性访问的相同数据.封装了ViewData,因此可以用类似访问属性的语法来检索

ASP.NET MVC3学习心得-----表单和HTML辅助方法

 5.1表单的使用 5.1.1  action和method的特性 表单是包含输入元素的容器,包含按钮.复选框.文本框等元素,表单的这些输入元素使得用户能够向页面中输入信息,并把输入信息提交给服务器.Action特性告知浏览器将URL提交到哪里,method特性来说明用何种方式告知浏览器,默认为get方法 5.1.2Get和Post方法 1.如果不想让浏览器把输入值放入查询字符串中,而是想放入HTTP请求的主体中,可以为method赋值post,post可以用来提交信用卡信息.向购物车添加专辑或

ASP.NET Core学习之一 入门简介

一.入门简介 在学习之前,要先了解ASP.NET Core是什么?为什么?很多人学习新技术功利心很重,恨不得立马就学会了. 其实,那样做很不好,马马虎虎,联系过程中又花费非常多的时间去解决所遇到的"问题",是简单的问题,对,就是简单,就是因为觉得简单被忽略的东西,恰恰这才是最重要的. 1.学习资料 首先,介绍下哪里可以获得学习资料 英文官网,最好的文档,英语得过硬 https://docs.microsoft.com/en-us/aspnet/core/ 可惜当年英语就是马马虎虎过来的

Asp.Net MVC3 简单入门第一季(四)详解Request Processing Pipeline

引子       很久没更新了,今天写点关于Asp.Net MVC的PipeLine.首先我们确认一点,Asp.Net WebFrom和Asp.Net MVC是在.Net平台下的两种web开发方式.其实他们都是基于Asp.Net Core的不同表现而已.看下面一张图,我们就能理解了WebForm和Asp.Net MVC的一个关系了. 那好我们了解了Asp.Net平台下的两种开发方式,相信大家对于WebForm的Pipeline都非常熟悉了,当然这也是你熟悉Asp.Net开发的必经之路.而看了很多

Asp.Net MVC3 简单入门第一季(五) 通过Asp.Net MVC的区域功能实现将多个MVC项目部署到一个站点

引子 本文将主要演示怎么将多个Asp.Net MVC项目部署到一个IIS站点中的例子,主要使用的是Asp.Net MVC提供的区域的功能. Asp.Net MVC提供了区域的功能,可以很方便的为大型的网站划分区域.可以让我们的项目不至于太复杂而导致管理混乱,有了区域后,每个模块的页面都放入相应的区域内进行管理很方便.而随着项目的复杂,每个开发人员开发的模块呢也可能是一个完整的解决方案,而他要开发的UI项目呢只是主站点项目的一个区域,而如果把所有的UI项目放到一个UI项目,在团队开发时就不很方便了

Asp.Net MVC3 简单入门第一季(一)环境准备

前言 大家好,从今天开始我将写一个关于AspNet MVC3方面学习的总结,并跟初学者一起分享一些基本的基础知识,作者本身也很愿意跟大家一起交流技术,一起交流一起进步,欢迎高手不吝赐教,欢迎大家不同的意见和建议,作者的学识和见识当然有自己的局限性,希望自己能成为不闷骚型的技术人员,而不是只自己享受技术,而不让更多的人来分享你的成果的人. 第一节:关于Asp.Net MVC3 Asp.Net MVC已经到第三版了,相信大家也都熟悉了,我也不再重复相关概念性的东西了.但是大家一定要了解,Asp.Ne

Asp.Net MVC3 简单入门第一季(三)详解Controller之Filter

前言 前面两篇写的比较简单,刚开始写这个系列的时候我面向的对象是刚开始接触Asp.Net MVC的朋友,所以写的尽量简单.所以写的没多少技术含量.把这些技术总结出来,然后一简单的方式让更多的人很好的接受这是我一直努力的方向.后面会有稍微复杂点的项目!让我们一起期待吧! 此文我将跟大家介绍一下Asp.Net MVC3 Filter的一些用法.你会了解和学习到全局Fileter,Action Filter等常用用法. 第一节:Filter知识储备 项目大一点总会有相关的AOP面向切面的组件,而MVC

Web开发学习心得5——Asp.net的设计思想

自从有了html与http,就有了浏览器与Web服务器,并有了Web应用,最初的交互模式是这样的: 开发学习心得5--Asp.net的设计思想-">该模式很好地运行了很多年.然而,随着计算机应用的发展,人们越来越不满足于只有静态内容的页面,而由某种机制动态产生html等代码的需求越来越迫切,于是,很多技术就应运而生,Asp.net就是这样一种技术.从本质上讲,Asp.net就是一种服务器端动态产生html.css.javascript等浏览器认识的代码的技术.Asp.net的交互模式如下:

ASP.NET MVC学习之控制器篇扩展性

原文:ASP.NET MVC学习之控制器篇扩展性 一.前言 在之前的一篇随笔中已经讲述过控制器,而今天的随笔是作为之前的扩展.   二.正文 1.自定义动作方法 相信大家在开发过程一定会遇到动作方法的重名问题,虽然方法的名称和参数一样,但是里面的逻辑是不一样的,因为你设置了对应的注解属性可以确定调用哪个动作方法.这个时候你就需要将动作的名称与方法的名称区别开来,那么你就可以使用ActionName注解属性.比如我们要求一个页面在本地访问与非本地访问时呈现不同的页面,但是你又想用不同的方法区分开来