zoukankan      html  css  js  c++  java
  • ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础

      ASP.NET MVC在原来ASP.NET的基础上抛弃了基于页面的架构风格,使用了全新的MVC(模型-视图-控制器)架构的一种技术。

      目前,它和ASP.NET都共存在.NET Framework之上。

    1.       MVC架构

      MVC架构是一种严格实现应用程序各个部分隔离的架构模式,这种隔离称之为“松耦合”。这种架构模式的好处如下:

      1)         开发

        开发单个组件时不再依赖其他组件,减少了组件间的影响。

      2)         测试

        组件间的松耦合,允许测试代码能够替换其他组件,减少其他不必要的操作,简化了测试流程。

      3)         维护

        组件间的依赖关系降低,修改一个组件时,对其他组件的影响降低到最小,更利于维护。

    2.       MVC架构的组成

      MVC架构将应用程序严格地划分为三层:模型、视图和控制,每层有具有各自的职责,不需要关注其他层具体实现。三层之间的关系如下图所示:

     

      模型(Model):代表着核心的业务逻辑和数据,封装了一些属性和行为。

      视图(View):负责将模型数据转换并呈现在表示层上。

      控制器(Controller):控制程序逻辑,并协调视图和模型之间的关系,它从视图上接受请求,使用模型执行对应的操作,并将执行的结构反馈给视图。

    3.       路由

      对ASP.NET MVC网站的请求都是使用URL的形式,因此,系统能够根据URL的信息作出相应的动作,这就是ASP.NET Routing模块的主要作用,所以说,ASP.NET Routing是ASP.NET MVC请求的核心。

    简单来说,ASP.NET Routing是一个模式匹配系统,程序运行初始化时,根据Route表的信息进行模式注册,即告诉Routing模块如何处理与模式匹配的请求,程序运行时,Routing模块接受请求,先在路由表进行模式匹配,匹配成功时,将请求转发给特定的控制器处理,匹配不成功时,则返回404错误码。

    4.       路由配置

      创建程序时,默认已经配置ASP.NET路由,主要包括两个位置

      首先,在Web.config文件中配置有路由相关的配置节,<system.web.httpModules/>、<sytem.web.httpHandlers/>、<system.webserver.modules/>、<sytem.webserver.handlers/>。

      其次,程序启动时调用的注册信息,文件位置App_Start/RouteConfig.cs,调用扩展方法MapRoute()方法。

        routes.MapRoute(

                     “Default”,//路由名字

                     “{controller}/{action}/{id}”,//URL参数信息

                     new {controller=””,action=””,id=UrlParameter.Optional }//默认URL参数

      还可以添加自定义路由,但是,代码位置必须放置在默认路由的前面,否则永远得不到匹配。

    URL

    Controller

    Action

    ID

    /auctions/auction/1234

    AuctionsController

    Auction

    1234

    完美匹配

    /auctions/recent

    AuctionsController

    Recent

    无参数

    /acutions

    AuctionsController

    Index

    默认Action

    /

    HomeController

    Index

    系统默认

    5.       Controller

      MVC架构中,Controller能够相应视图发来的请求,并获取相应的模型数据,反馈给视图。在ASP.NET MVC程序,Controller是包含被路由模块处理请求时调用的方法的类。

      Controller是一个类,统一派生于System.Web.Mvc.Controller基类。

      ASP.NET MVC程序有个约定就是创建的Controller类,都必须以Controller结尾,比如HomeController。系统启动时,会自动查找派生于Controller的子类,并且名字后缀为Controller的类进行实例化操作。程序中使用该控制器时,不需要填写后面的Controller后缀,直接使用名称即可。

    6.       ControllerAction

      Controller类上的公共方法称为ControlAction。ControlAction不能重载,也不能为静态方法。

    7.       ActionResult

      ControllerAction处理完请求后,如果需要返回处理结果,则需要使用ActionResult进行返回。Controller中每个ControllerAction都要返回ActionResult,但不需要手动编码完成,只需要调用Controller基类中的对应方法即可。

    Content()

    返回文本类型的ContentResult

    “Hello World”

    File()

    返回文件内容的FileResult

    HttpNotFound()

    返回包含404错误码的HTTPNotFoundResult

    JavaSript()

    返回包含JavaScript内容的JavaScriptResult

    “function hello(){

     alert(hello world);

    }”

    Json()

    返回Json格式数据的JsonResult

    PartialView()

    返回包含部分视图内容的PartialViewResult

    Redirect()

    跳转到给定的URL上

    View()

    返回渲染视图的ViewResult

    8.       操作参数

      ControllerAction在被执行时,能够使用请求时发送的参数信息,这种功能称为“模型绑定”。比如:

      ublic ActionResult Index(string name,string password)

      {  

      }

      当ASP.NET MVC框架执行该方法时,会自动将传递的参数值赋值到对应的参数上。ASP.NET MVC框架处理大量的基础工作,让我们能够专注于业务逻辑,而且代码也有更高的可读性。

    9.       视图

      ControllerAction向视图返回了ActionResult类型的ViewResult实例,当渲染视图时,ASP.NETMVC框架会使用到Controller和ControllerAction的名字。以HomeController中的Index为例:

      public ActionResult Index()

      {

               return View();

      }

      ASP.NET MVC框架中一个约定,Controller中使用到的视图文件都需要放置在Views下以Controller名称命名的文件夹中。而且,若返回值中没有传递视图名称参数,则直接ControllerAction的名称作为视图的文件名称。如果没有找到对应的视图文件,则会继续在Views下的Shared文件夹中查找。

  • 相关阅读:
    Android 画布绘图
    Android 4.2.2原生Launcher修改使之可以运行过程小结
    canvas的translate、scale、rotate等方法
    WorkSpace介绍
    Libgdx New 3D API 教程之 -- 加载3D场景的背后-第二部分
    Libgdx New 3D API 教程之 -- 使用Libgdx加载模型
    LibGdx----Texture, TextureRegion, SpriteBatch
    libgdx学习之Camera
    Java伪代码
    读大道至简之感
  • 原文地址:https://www.cnblogs.com/DreamOfLife/p/8972290.html
Copyright © 2011-2022 走看看