zoukankan      html  css  js  c++  java
  • ASP.NET MVC3学习心得入门和控制器

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

    第一章入门

    1.1.2MVC模式简介

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

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

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

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

    1.1.3 MVCweb框架中的应用

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

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

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

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

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

    约定优于配置

    不重复

    尽量保持可拔插性

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

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

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

    支持.NET4数据注解

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

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

    支持JavaScriptJQuery验证和JSON绑定

    支持使用NuGet

    1.1.5 Razor视图引擎

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

    Razor语法设计目标:

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

    例如:@foreachvar album in Model.Albums)

    {

     <li>

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

    </a>

    }

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

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

    支持所有的文本编辑器

    强大的只能感知功能

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

    1.1.6验证的改善

    1、支持.NET4数据注解

    .NET框架中System.ComponentModel.DataAnnotationsDisplay特性可以本地化

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

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

    1.1.7强大的JavaScript支持

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

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

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

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

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

    2、JQuery验证

    3、JSON绑定

    通过JsonValueProviderFactory支持JSONJavascript object Notation)绑定

    1.1.8高级特性

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

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

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

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

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

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

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

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

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

    值提供器(注册和注入)

    2、全局操作过滤器

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

    1.2ASP.NET MVC和约定

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

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

    1、约定优于配置

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

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

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

    2、约定简化通信

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

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

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

     

     

                    第二章控制器

    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中特定的路径片段或查询字符串,结果就是一个返回给浏览器的字符串,这样就忽略了以下细节:

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

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

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

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

  • 相关阅读:
    hdu 5387 Clock (模拟)
    CodeForces 300B Coach (并查集)
    hdu 3342 Legal or Not(拓扑排序)
    hdu 3853 LOOPS(概率DP)
    hdu 3076 ssworld VS DDD(概率dp)
    csu 1120 病毒(LICS 最长公共上升子序列)
    csu 1110 RMQ with Shifts (线段树单点更新)
    poj 1458 Common Subsequence(最大公共子序列)
    poj 2456 Aggressive cows (二分)
    HDU 1869 六度分离(floyd)
  • 原文地址:https://www.cnblogs.com/lidabo/p/2798896.html
Copyright © 2011-2022 走看看