很早之前在项目中使用的软件架构模式,一直想着写一写加深自己对它的理解。但总是一天拖着一天,趁着现在闲,跟大家唠唠嗑这个东西。

首先什么是 MVC(Model-View-Controller) 呢?不得不说这是一个有情怀的思想,它把前后端的代码进行一次极大的解耦。当然这跟我们平常见到的三层是两个完成不一样的概念,它只对 UI 层的一种优化。

我们先来看看它长什么样的吧。

附图 MVC 简单模型:(其实它长的很简单有木有?能看还实用)

根据这个模型你大概就能知道 MVC 其实说白了就是把前后端给分离出来了,后台代码直接存放到 Controller 中,然后通过 Model 来进行数据的传递,前台接收到请求后通过 View 展示出来。

接下来我们通过 Visua Studio 2012 创建一个 MVC 3 的实例让您有更深刻的理解:

1.在 Visual C#  ->  Web 选择ASP.NET MVC 3 Web 应用程序

2.在进行这一步选择之前我们来了解下项目模板。从下图可看出有3个默认的模板,空模板 / Internet 应用程序 / Intranet应用程序 。

   1.空模板:创建完之后就是个空的 ASP.NET MVC 3 项目。2. Internet 应用程序:生成之后会自动帮我们创建一些文件,如 Home / Index 等3. Intranet 应用程序:跟 Internet 应用程序最大的区别就是一个是互联网而它是物联网,这当中有一个域的概念。今天聊的话题不是这个,暂不深究

这里我们选择 Internet 应用程序模板(这里我把这个窗体分为3个部分,模板 / 引擎 / 测试单元)

接下来是视图引擎的选择, MVC 给我们提供了2个视图引擎 Razor 和 ASPX 。那视图引擎是用来做什么的呢?这边我想您应该联想到了 View 。我们通过之前的 MVC 模型图可知道 View 在拿到数据后会把数据展现给用户,那是通过什么样的办法来展示给用户呢?渲染引擎,比如您在玩游戏的时候有的游戏会要求安装一个 DirextX 这种东西,它的功能就是要硬件加速,方便以视图的方式更快的渲染出来。而 View 的渲染引擎也是同个道理。那么在这里我们就选择 Razor 来当我们的视图引擎,和 ASPX 视图引擎的最大的明显区别就是 Razor 渲染出来的页面后缀是 .cshtml 而 ASPX 视图引擎则就是我们经常见到的 .aspx 页面。

这里顺便提一下第3个模块 创建单元测试项目 ,顾名思义就是可以为其创建一个测试单元。 今天的话题是初始 MVC ,就不聊这个测试的事了。

最后直接点确定,开始生成我们的第一个 MVC Demo ,画红框的就是生成之后的 MVC 结构中最核心的3个文件夹。其他的文件目录基本都是一些资源文件了。

其次比较值得介绍的当然是 Global.asax 文件了,它是一个解析文件。主要用于解析 HttpApplication 这一个类,总的来说所有的解析都会通过 MvcApplication 来完成解析。也就是说,当客户端发请求过来后,最先交给 MvcApplication ,它来决定调用某个 Controller 的某个 Action。

开始编译浏览下我们第一个 MVC 网站:

这里就会产生一个新的困惑,这个地址 http://localhost:23347/ 为什么没有特意指向某个地址就能访问到这个页面呢?实际上这个请求发起的过程中,URL 地址便省略一部分地址了,实际上的地址应该是:

http://localhost:23347/home/index ,而 /home/index 拆分出来,/home 对应的其实就是目录中的某个 Controller ,而 index 则就是对应 Controller 的某个Action

转载于:https://www.cnblogs.com/byvar/p/4469254.html

我和ASP.NET MVC有个约会相关推荐

  1. 【更新】Essential Studio for ASP.NET MVC更新至2018 v4(四)

    下载Essential Studio for ASP.NET MVC最新版本 Essential Studio for ASP.NET MVC控件包是一款MVC界面开发包,它包含了几乎所有企业级Web ...

  2. ASP.NET MVC 4 (十) 模型验证

    模型验证是在模型绑定时检查从HTTP请求接收的数据是否合规以保证数据的有效性,在收到无效数据时给出提示帮助用户纠正错误的数据. 显式模型验证 验证数据最直接的方式就是在action方法中对接收的数据验 ...

  3. DayPilot——10分钟内用于ASP.NET MVC的AJAX每月事件日历

    目录 1.项目设置(00:00:00-00:03:00) 2. ASP.NET MVC视图(00:03:00-00:04:00) 3.茶歇(00:04:00-00:05:00) 4. ASP.NET ...

  4. ASP.NET MVC 2示例Tailspin Travel

    Tailspin Travel 是一个旅游预订的应用程序示例,最新版本采用ASP.NET MVC 2技术构建,主要使用 DataAnnotations 验证, 客户端验证和ViewModels,还展示 ...

  5. Asp.net MVC中的ViewData与ViewBag

    在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从 ...

  6. ASP.NET MVC Identity 兩個多個連接字符串問題解決一例

    按照ASP.NET MVC Identity建立了一個用戶權限管理模塊,由于還要加自己已有的數據庫,所以建立了一個實體模型,建立了之后,發現登錄不了: 一直顯示"Login in faile ...

  7. asp.net mvc 学习

    Routing讲解: http://www.cnblogs.com/wangiqngpei557/p/3379095.html Filter讲解: http://www.cnblogs.com/ymn ...

  8. GPS部标平台的架构设计(十)-基于Asp.NET MVC构建GPS部标平台

    在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的 ...

  9. ASP.NET MVC:利用ASP.NET MVC4的IBundleTransform集成LESS

    背景 LESS确实不错,只是每次写完LESS都要手工编译一下有点麻烦(VS插件一直没有安装好),昨天在官方看到了如何用IBundleTransform集成LESS,今天就记录一下. 参考资料:http ...

最新文章

  1. Spring 入门知识点笔记整理
  2. Scala 空返回值Unit
  3. 【Java文件操作(六)】借助内存复制图片:ByteArrayOutputStream\ByteArrayInputStream\FileOutputStream\FileInputStream辨析
  4. 锁相放大器sr830_各位谁会用Stanford SR830啊,我都快被这个锁相放大器折腾死了!!!!-北京搜狐焦点...
  5. EventStore文件存储设计
  6. Python 之父再度发声:我们能为中国的“996”程序员做什么?
  7. 20145303 《信息安全系统设计基础》第7周学习总结(2)
  8. JSP程序开发学习笔记2
  9. 商场内自动扶梯的研究
  10. SpringMVC学习指南【笔记4】数据绑定、表单标签库、转换器、格式化、验证器
  11. LINUX下用C判断一个进程是否活着
  12. python装饰器两层和三层_python装饰器为什么要双层嵌套函数
  13. 嵌入式老师傅告诉你单片机6年想转嵌入式Linux值不值得
  14. java坦克大战项目
  15. 软件设计师考试真题链接
  16. java 右对齐_字符串对齐器(左对齐、居中、右对齐)
  17. WEB渗透测试之三大漏扫神器
  18. 网页通用的测试用例(出处:: 51Testing-- lxp1119216)
  19. 操作系统锁的实现方法有哪几种_深入理解多线程(四)——Moniter的实现原理...
  20. java商城答辩_毕业答辩-基于Java的网上购物商城的设计与实现.ppt

热门文章

  1. Wireshark和TcpDump抓包分析心得
  2. 自定义控件:属性为控件需要注意的地方
  3. MVC3.0与C#截取字符串
  4. 应用虚拟化之规划篇二 项目流程规划
  5. 相聚“金巴蜀”、付诸笑谈中
  6. Makefile万能写法(gcc程序以及arm-linux-gcc程序)-转
  7. cgic 测试demo
  8. 【Mac】789uiojklm键失效、启用小键盘(数字键盘)鼠标键的解决方法
  9. 【iOS开发】swift 3.0 延长设置launch image启动页面图片显示时间
  10. perl system函数返回值问题