MVC系列之开始

简介: MVC系列之开始

4月5号晚本来应该写出来的,这几天迷上了炉石传说,打得有点疯,明天又得上班了,收拾心情还是得写出来。上星期5晚上回家的时候,不得不吐槽一下的确有点背。6点下班冲去江夏地铁站,赶7点15分到江门的轻轨,到了南站到机子取票的时候,心中N只草泥马跑过,人真多。不得不跑去柜台,眼看赶不上了还有7分钟,打算改签,工作人员竟然要我试下。。。。。我还真打算试下,准备上电梯的时候发现,怎么电梯只有下,没有上。。。。一问工作人员,跟我说:电梯坏了,你可以去西门上,或者在那排队坐升降电梯。。。。。我看看排着长龙的升降电梯,望望的没有尽头的西门。绝望的走向地铁口,去省站搭大巴去 - -!天无绝人之路啊,搭了最后一班车,回到家了。。。。。。


  废话那么多,只是看看有没有和我差不多经历园友啊,把我不开心的事,说出来让你们开心开心,让大家平衡平衡。


  去了新公司,又要用回MVC,刚毕业出来用过一段时间,不过基础方面不怎么扎实,所以打算看书,重新好好学一遍。C#系列还是会持续更新的,除了学好一门语言,还得精通一套框架啊。。。不然好好的语言用在哪呢?


前言


  谈到框架,我们就先谈谈web form 和 MVC 的区别。这两个框架现在比较流行的,都是基于asp.net平台构建的,支持.net上任何语言。web form拥有可视化界面,我们可以拖拉控件,进行快速的页面布局,接着针对对应的控件编写事件,达到快速开发。可是对前台的HTML控制,并不理想,不知道大家有没有试过点开F12看看。。反正我是看晕了。。。另外,web form有‘视图状态’这个概念,如果控制不好,每次post后回传不必要的数据,就会浪费资源,如果数据量比较大,还会造成页面阻塞。


  正因为Web Form 的各种原因,因为MVC诞生了,从架构上面来看分三层,隔离就是为降低模块间耦合性,前端与后台的隔离,使设计与开发职责更明确;开发人员针对模块业务编写,提高代码质量,使程序更容易维护、更好的扩展。


image.png

  其实,两个框架都是基于.NET平台构建的,Web Form能实现的,ASP.NET MVC也可以,反之也成立。另外,Web Form是事件驱动了,而ASP.NET MVC是路由驱动的。我认为,Web Form适合于企业内部系统,企业系统对于页面的要求并不大,更注重后台业务逻辑,快速简洁的开发,可以减少成本。而MVC 前后端的分离,对HTML CSS JS良好控制,设计出更漂亮的页面,更适合于门户网站。不过这些不是绝对的,也有公司利用MVC和 easyui 之类的框架做企业内部系统,也是根据公司业务和开发人员技能来决定的。


新的开始


  两者的区别大致了解之后,还是得开始创建我们的项目。


  image.png

  点击创建新的ASP.NET MVC 4 项目后,会见到模板有6个选项,空模板,基本模板,Internet应用程序,Intranet应用程序,移动应用程序,web api。

  空模板


  •   这个空模板不算空哈- -!有基本的MVC的文件夹结构、配置文件,还有ASP.NET MVC基本需要的程序集。

  基本模板

  •    这个模板表明了,创建ASP.NET MVC 所需的最低标准的资源,和空模板比起来,多了两个文件夹,Content和Scripts。

  Internet应用程序

  •   其实这个模板就是在空模板的基础上扩展的DEMO,有登陆注册功能,初学者可以去看看,学着里面敲一敲。

  Intranet应用程序

  •     跟Internet应用程序有点相同,使用了基于windows的验证机制。

  移动应用程序

  •   这个模板主要是针对移动设备的优化,里面有JQuery Mobile 框架。

  web api

  •   web api集成在ASP.NET MVC里,直接可以把ASP.NET MVC当成一个web服务框架来用,特别方便。之前的公司用corona进行开发移动软件,我也是用MVC搭建的服务。


  视图引擎我选择了Razor,其实对于Razor来说不是什么新技术啊,我对它的理解是,在视图里写.net代码,打@之后随意敲。。。。。比aspx方便多了。。。。。=。=


  image.png

  既然自己弄着玩,那我就用基本模板好了,创建出来就见到上图的架构:


  • App_Data,这是数据的物理存储区。此文件夹的作用与它在使用 Web 窗体页面的 ASP.NET 网站中的作用相同。
  • App_Start,这个放着的是路由配置,原本是在Global.asax里的,在MVC4分离出去了。
  • Controllers,控制器,要求所有控制器的名称均以“Controller”结尾。
  • Models,通常包括定义对象以及定义与数据存储交互所用的逻辑的代码。
  • Scripts,存储支持应用程序的脚本文件,js,jq等。
  • Views,存储视图,里面还有个share文件夹,存放的是母版。
  • Global.asax,程序第一次执行的时候就是从这里开始,调用了App_Start里的路由配置。


  在Controllers文件夹添加一个HomeController,打开可以看见有个默认的Action ——Index,然后在Model文件夹添加一个类文件。每当我们接触一门新技术的时候,都习惯性的对这个陌生的世界打个招呼,那这次我们也不例外,HomeController 和 Model 里分别编写一下代码。


image.png

image.png

  添加Index视图,并且转入,将ViewData["hw"]编写进去,Ctrl+F5运行一下,可以看见我们写的Hello Word在页面上展示给我们看了,我们在地址栏上添加上/Home/Index,发现和原来的页面一样。其实这个是因为路由配置的默认设置,将/Home/Index设置为默认路径。


  image.png

总结


  上面大概了解了MVC的基本情况,我们知道Model是编写数据逻辑的,由Controller进行调用,然后再由Controller决定返回哪个View,最后将数据展示给用户。这里另外提一提,就是这个Model,很多时候会另外建一个类库,作为一个数据层进行使用。

image.png


目录
相关文章
|
4天前
|
云安全 人工智能 算法
以“AI对抗AI”,阿里云验证码进入2.0时代
三层立体防护,用大模型打赢人机攻防战
1313 3
|
4天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
653 3
|
5天前
|
人工智能 Rust 运维
这个神器让你白嫖ClaudeOpus 4.5,Gemini 3!还能接Claude Code等任意平台
加我进AI讨论学习群,公众号右下角“联系方式”文末有老金的 开源知识库地址·全免费
|
11天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
759 5
|
8天前
|
物联网 API UED
Qwen-Image-Edit-2511来啦!角色一致性再提升,LoRA能力内置
Qwen-Image-Edit-2511发布!提升角色与多人合照一致性,集成Lora打光、新视角生成,增强工业设计与几何推理能力。已开源,支持魔搭、QwenChat免费体验,本地部署可获最佳效果。
463 3