热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ASP.NETMVC学习笔记1

1.什么是ASP.NetMVCASP.NetMVC是一种开发Web应用程序的工具(isawebapplicationdevelopmentframework),采用Model-


1. 什么是ASP.Net MVC

  ASP.Net MVC是一种开发Web应用程序的工具(is a web application development
framework),采用Model-View-Controller即模型-视图-控制器的模式来构建    Web应用程序,强调分层即各部分的分工,每个部分有各自的职责,而不相互替代。


2. ASP.Net MVC来源

  很久之前,人们有开发基于Winodw的Web应用程序的需求,于是微软开发出了下列的几个产品:ASP、ASP.NET Web Forms、ASP.NET
MVC   
  ASP即Active Server
Page是一种脚本语言,它的代码Code与网页标记Markup放在了一个文件中,这样带来了代码复用率的问题、代码与标记没有分离不能更好的分工,即只是注重代码或只是注重标记,也不能很好的利用面向对象编程。
  ASP.NET
Web Forms即ASP.NET
窗体应用程序,它采用了Code-Behind的形式,前端是Html标记后台是服务器端代码,解决了ASP中的问题。ASP.NET
窗体应用程序现在在被广大的.NET开发人员所使用,然而仍然有不足,在开发ASP.NET
窗体应用程序时,大量使用到了HTML、Javascript、CSS,由于这个问题,导致我们不能集中精力的去解决业务逻辑问题。
  ASP.NET
MVC就此产生,它采用Model-View-Controller即模型-视图-控制器的模式来构建Web应用程序,将应用程序分为了三个层次:Model层、View层、Controller层。各自有自己的职责,实现了分工。


3. 运行机制

  请求过程:Request -->Routing --> Handler -->Controller --> Action
--> View -->
Response (如下图) 
  发送请求-->路由选择(Routing)-->控制器-->视图,其中控制器是从模型中得到数据的。
  示例:HelloWorldBareBone(只是Controller不用View与Model)
  示例:HelloWorldBareBone2(Controller+View,没用Model)
  示例:HelloWorldBareBoneUsingModel(三者全部用到)

  bubuko.com,布布扣

  英文解释



  1. Request comes into ASP.NET

  2. ASP.NET Routing finds the route match by calling
    RouteCollection.GetRouteData

  3. This in turn calls RouteBase.GetRouteData on each route until it finds a
    match

  4. The IRouteHandler for the matching route has its GetHttpHandler method
    called

  5. The MvcHandler runs (ProcessRequest is called)

  6. The MVC controller factory locates and creates the controller in
    CreateController

  7. The ControllerActionInvoker determines which action to run in
    InvokeAction

  8. The AuthorizationFilter stage executes (this includes the authorization
    method on the controller itself)

  9. The ActionExecuting stage executes

  10. The requested action method is executed

  11. The ActionExecuted stage executes

  12. If there is a result object then the ResultExecuting stage executes

  13. If the result wasn‘t cancelled then the ActionResult‘s ExecuteResult
    method is executed

  14. The ResultExecuted stage executes

  15. If an error occured then the Exception stage executes

4. 路由Route

  客户端发出请求,首先路由要对URL地址进行解析,路由就是一个URL匹配系统,路由里面定义了URL的请求形式,如果URL地址符合这个形式,就会进行下一步处理,如果没有匹配的形式就会报错。在路由中可以定义多个匹配形式。
  路由中URL形式的注册是通过RegisterRoutes方法(如下)实现的,在MVC
3中这个方法在Global.asax文件中。在MVC
4中,这个方法在App_Start文件夹下的RouteConfig.cs文件中。这个RegisterRoutes方法会在Application_Start()方法中被调用,也就是说程序刚运行的时候,就会注册。



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 } // 参数默认值
);
}

   程序中会有一个默认的路由,Default是路由的名称,{controller}/{action}/{id}是这个路由可以匹配的URL格式,如果你输入的是
Home/Index/23,那么程序就会执行Home控制器中的Index方法,并且id=23,如果你输入的是User/Edit/23,那么程序就会执行User控制器中的Edit方法,并且id=23
,当然,并不是每个都要赋值,这时候也就用到了默认值,上面定义的默认值是,默认是Home控制器,执行的是它的Index方法。


4. Model-View-Controller 模式

  这种模式将应用程序分为了三个层次:Model层、View层、Controller层。实现了职责的分工,各自只需负责自己的工作,不需相互关心。即我们常说的“低藕合”。由于各个层次独立了开来,所以可以进行单独的开发与维护,还有利于测试。


Model(模型)

  它包含着业务逻辑与数据构成,代表着实体,封装着实体的属性与方法。


View(视图)

  视图负责将模型中的数据展示出来,一般是以网页的形式来展示,然而还有更多的形式,比如:PDF、XML、电子表格。视图只是用来展示数据,不包含任何的业务逻辑。


Controller(控制器)

  是Model与View的桥梁,负责将Model中的数据传递给View。它控制程序的处理逻辑。客户端的请求经路由解析之后,如果匹配成功,就会调用Controller控制器中的方法。

  以HelloWorldBareBoneUsingModel为例:如果用户输入的URL是Home/Index,且匹配默认的路由,那么之后就会调用HomeController中的Index方法(如下)。



public ActionResult Index()
{
Country oCuntry
= new Country { CountryCode = "91", CountryName = "India" };
return View(oCuntry);
}

  控制器方法要求返回一个ActionResult,上面返回了一个
View(oCuntry),这个是ViewResult类型的,ViewResult是ViewResultBase的子类,而ViewResultBase是ActionResult的子类。父类对象引用子类实例,这是可以的。同理,它还可以返回ContentResult、FileResult、HttpNotFoundResult、JavascriptResult、JsonResult、PartialViewResult、RedirectResult,加上ViewResult,此外,还可以进行重定向。下面说一下,返回这些类型使用的方法。



























返回类型 ViewResult ContentResult FileResult HttpNotFoundResult JavascriptResult JsonResult PartialViewResult RedirectResult 重定向到一个方法 重定向到一个路由
使用方法 View() Content() File() HttpNotFound() Javascript() Json() PartivalView() Redirect() RedirectToAction() RedirectToRoute()

  示例:ActionResultDemo


推荐阅读
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 本文介绍了一种支付平台异步风控系统的架构模型,旨在为开发类似系统的工程师提供参考。 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文详细介绍了Linux系统中用于管理IPC(Inter-Process Communication)资源的两个重要命令:ipcs和ipcrm。通过这些命令,用户可以查看和删除系统中的消息队列、共享内存和信号量。 ... [详细]
  • NX二次开发:UFUN点收集器UF_UI_select_point_collection详解
    本文介绍了如何在NX中使用UFUN库进行点收集器的二次开发,包括必要的头文件包含、初始化和选择点集合的具体实现。 ... [详细]
  • 解决SQL Server数据库sa登录名无法连接的问题
    在安装SQL Server数据库后,使用Windows身份验证成功,但使用SQL Server身份验证时遇到问题。本文将介绍如何通过设置sa登录名的密码、启用登录名状态以及开启TCP协议来解决这一问题。 ... [详细]
  • 本文介绍了如何在 ASP.NET 中设置 Excel 单元格格式为文本,获取多个单元格区域并作为表头,以及进行单元格合并、赋值、格式设置等操作。 ... [详细]
  • LDAP服务器配置与管理
    本文介绍如何通过安装和配置SSSD服务来统一管理用户账户信息,并实现其他系统的登录调用。通过图形化交互界面配置LDAP服务器,确保用户账户信息的集中管理和安全访问。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 本文介绍了Java编程语言的基础知识,包括其历史背景、主要特性以及如何安装和配置JDK。此外,还详细讲解了如何编写和运行第一个Java程序,并简要介绍了Eclipse集成开发环境的安装和使用。 ... [详细]
  • Bootstrap 缩略图展示示例
    本文将展示如何使用 Bootstrap 实现缩略图效果,并提供详细的代码示例。 ... [详细]
  • 使用 Git Rebase -i 合并多个提交
    在开发过程中,频繁的小改动往往会生成多个提交记录。为了保持代码仓库的整洁,我们可以使用 git rebase -i 命令将多个提交合并成一个。 ... [详细]
  • Manacher算法详解:寻找最长回文子串
    本文将详细介绍Manacher算法,该算法用于高效地找到字符串中的最长回文子串。通过在字符间插入特殊符号,Manacher算法能够同时处理奇数和偶数长度的回文子串问题。 ... [详细]
  • MySQL 数据库连接方法
    本文介绍了如何使用 MySQL 命令行工具连接到指定的数据库。 ... [详细]
author-avatar
仁寿戴氏
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有