ASP.NET MVC总结基础篇(一)
前几天要准备演讲,所以准备了一些关于MVC的基本东西。我以前用过MVC,但是我只用过,没有理解过。于是我借这个机会看了别人的MVC视频(是微软的一个MVP成员发布的视频,相信有人看过),整理了一下这个笔记,一下子全部分享了出来。关于MVC的一切都被介绍了,但这是非常基本的。本来打算写完一篇文章,发现东西很多,就把它分成了两篇!
什么是ASP.NET MVC(1)ASP.NET MVC是用微软提供的MVC模式编写ASP.NET Web应用程序的框架
(2)MVC是微软继after Web Forms之后的一种开发模式,不是替代模式!
(3)官方网站:http://www.asp.net/mvc
(4)来源网站:http://aspnet.codeplex.com/wikipage? title=MVC
ASP.NET MVC的特点(1)任务分离,耦合度低
(2)可扩展性很高
(3)强大的网址重写(路由)机制
(4)与ASP中现有技术兼容。网
(5)开源
ASP.NET MVC的优点(1)通过将项目划分为模型、视图和控制器,使得复杂的项目更容易维护
(2)不使用ViewState和服务器表单控件,更方便控制应用的行为(可以说是回到了原来的状态)
(3)应用程序通过控制器控制程序请求,控制器可以提供丰富的url重写
(4)支持测试驱动开发
(5)团队模式更加突出
为什么我们需要ASP.NET MVC(1)关注点分离
(2)高扩展性
(3)更好的可测试性
(4)更好的网址重写
(5)更好的性能
(6)更灵活的HTML代码控制
经过长时间的预览和两个RC版本的ASP.NET MVC1(1),2009年3月,微软正式发布了ASP.NET MVC1
(2)此时,微软在MVC领域的官方首个WebApplication框架带来了与WebForm几乎不同的开发理念
(3)但是由于一些原因,这个版本缺少Area等关键技术点,使得用这个版本开发复杂的MVC Web应用程序比较困难
ASP。NET MVC2 (1)在1.0之后不到一年就发布了,ASP.NET MVC2正式发布
(2)2010年4月12日,发布了VS2010和Visual Web Developer 2010的官方版本,它们是ASP.NET MVC 2的内置扩展
(3)ASP。NET MVC2给我们带来了很多期待已久的功能,比如强类型的HTML Helper、数据验证、自定义模板、Area、异步控制器等等
(4)的新技术。NET 4也给ASP.NET MVC2的应用开发带来了一些不错的新体验,比如动态类型和带默认值的方法参数。
你为什么需要ASP.NET MVC 3?ASPX的观点充满了%.%% .%% .%
(2)2)动作过滤器不能是全局的
(http响应状态404、301、302等没有对应的ActionResult类型。
(4)缺乏对模型数据验证的直接支持
(5)对依赖注入(DI)和控制反转(IoC)的支持不够好
(6)不支持网格
(7)视图数据使用起来有点麻烦(改为使用动态类型)
ASP。NET mvc3 (1)增加了Razor视图引擎;支持多视图引擎
(2)全局动作过滤器
(3)新的视图包属性(动态类型)最初是视图数据
(4)新的操作结果类型
(5)模型验证(模型验证)
(6)JSON绑定支持
(7)依赖注入
(8)HTML5,CSS3
(9)部分输出缓存
(10)html助手的增强
(11) nuget(继承自vs2010环境)
Razor视图引擎(1)使用@而不是%%
1)语法简单明了
2)易于学习
3)VS2010智能提示和语法着色
(2)全局设置默认布局和其他项目
3.0之前编写的全局操作筛选器(1)
复制的代码如下:[处理错误]公共类家庭控制器:控制器{.}
(2)3.0之后的写作:
复制代码如下:公共静态void寄存器全局筛选器(全局筛选器集合筛选器){filters。add(new handleerrattribute());}
新的操作结果类型(1) HttpNotFoundResult
404
(2)预测结果
302\301
(3)HttpStatusCodeResult
自定义Http状态代码
模型验证(1)自我验证
(2)客户验证
-默认情况下启用客户端身份验证
(3)远程验证
Razor视图引擎概述(1)ASP.NET MVC 3自带视图引擎
1)ASPX
2)剃刀
(2)ASP。NET MVC 3支持多视图引擎机制
(3)您可以在指定的项目中自定义默认视图引擎
1)在1)MVC3中释放发动机上方
2)火花
3)Nhaml
4)恩詹戈
5)自定义视图引擎
(4)Razor视图引擎是通过以代码为中心的方法实现的
(5)特征
1)介绍性,表达性,流利
-最大限度减少编写视图模板需要键入的字符数,实现快速流畅的编程。
-您不必中断编程来清楚地标记服务模块的开始和结束。Razor解析器可以从您的代码中自动推断
2)易于学习
-熟悉现有编程语言和HMTML技能,快速学习
3)可以在任何文本编辑器中工作
4)VS2010增加了智能提示
5)支持单元测试
(6)介绍和平滑比较
1)ASPX发动机
ul %foreach(产品中的风险值){ % Li %=p . Name %($ %=p . Price %)/Li % } %/ul
2)剃刀发动机
ul id='products' @foreach(产品中的var p){ Li @ p . Name([email protected])/Li } ul
在伟大的@(1) Razor中,服务器端代码段的起始位置以@符号开始
1)ASPX发动机
% int x=12字符串名称='韩应龙';%
2)剃刀发动机
@ { int x=12字符串名称='韩应龙';}
(2)渲染输出
1)由HTML编码(受到攻击)
1)ASPX发动机
span3360model。消息%/span
2)剃刀发动机
span@model。消息/范围
2)非HTML编码
1)ASPX发动机
span %=型号。消息%/span
2)剃刀发动机
span@Html。原始(模型。消息)/span
(3)编码和标记混合
1)ASPX发动机
%foreach(项目中的var项目){% span3360item。道具%/span %}%
2)剃刀发动机
@foreach(项目中的var项目){ span@item.Prop/span }
(4)代码和纯文本是混合的
1)ASPX发动机
%if(foo){%纯文本%}%
2)剃刀发动机
@ if(foo){ Text plain Text Text } @ if(foo){ @ :纯文本}
(5)文本标签是Razor专门处理的元素。Razor将文本块的内部内容视为内容块,并且不呈现包含这些内容的文本标签
(这意味着只呈现文本内部的内容,而不是标签本身。).这使得呈现没有被HTML元素包装的多行内容块变得很方便
(6)表达与文本的混合
1)ASPX发动机
你好3360title%.3360name%
2)剃刀发动机
你好@[emailprotected]
(7)电子邮件地址
1)[emailprotected]
Razor可以自动识别电子邮件地址,而不是作为服务器端代码执行
(8)两个连续的@ @符号将被渲染成一个@
西班牙有一个梦想
(9)显示渲染输出
1)span[email protected](ISBN number)/span
2)当要渲染的代码@前没有空格或标记时,我们需要用括号继续渲染输出。
(10)服务器端的评论
1)ASPX发动机
%我有一个梦想%
2)剃刀发动机
@*我有一个梦想*@
(11)渲染输出动态方法
1)对于动态方法的返回值等输出,我们可以用括号将代码关闭
@(MyClass。MyMethodAType())
(12)创建Razor代理
1)我们通过创建Razor委托来重用一些视图逻辑
复制代码如下: @ {funcdynamic,object b=@ strong @ item/strong } @ b(' bold this ')
(13)内容中的混合代码
复制代码如下:ul @ foreach(产品中的var p){ Li @ p . product name @ if(p . units in stock==0){ @ :(缺货)} else if(p . units in stock 4){ @ :(只剩下@ p.units in stock!)} /li } /ul
(14)多行内容混合编码
1)当内容在html标签中关闭时
复制代码如下: @ if (p .库存单位==0) {p内容日期的第一行内容第二行是: @ datetime。现在内容的第四行/p}
(15)多行内容混合码
1)当内容外部没有html标签包装时
1)@ if(p . unitsinstock==0){ @ :Line one之一@ :Line one之二@ : line Content之四}
2)@if(p.unitsInStock==0){内容日期的第一行内容的第二行文本是: @DateTime。现在内容/文本的第四行}
为什么需要布局页面(1)当不使用布局页面时,我们的大量核心网站布局代码会在每个页面中重复出现
1)代码冗余
2)不利于管理
3)不利于后期修改维护
Razor (1)的布局使用。cshtml(。VB中的vbhtml)而不是特殊的。主文件
1)布局文件名通常采用类似于_ layout.cshtml的名称。
(2)@RenderBody()用于标识布局页面中可替换内容的主题部分
(3)在内容页面中,布局(模板)页面的文件路径是通过分配页面的布局属性来指定的。
复制代码如下: @ { layout=' ~/view/shared/_ layout . cshtml ';}
预设布局页面的布局区域(1)使用@RenderSection在内容页面中预设布局页面中的一些区域
1)@RenderSection('head ',false)
-第一个参数是部分的名称
-第二种尝试是使用来设置是否是必须填充内容的区域。
——上面代码的意思是,生活是一个不必要的内容区,命名为head
(2)在内容页中,用@节头填充名为head的节.}
_ViewStart文件(1)添加一个名为
的文件
(2)该文件用于定义在每次视图展示开始时要执行的通用视图代码。例如,我们可以在这个文件中声明默认的布局属性
复制代码如下: @ { layout=' ~/view/shared/_ layout . cshtml ';}
(3)因为这段代码是在每个视图的开头执行的,所以我们不需要在任何单个视图文件中显示设置布局(除非我们想要覆盖上面的默认值)。
从ASPX视图到Razor视图的转换(1)手写文件和修改文件?
1)可惜
(2)自己写代码,用正则表达式转换?
1)正则表达式不够好
(3)然后使用著名telerick团队打造的RazorConverter!
https://github.com/telerik/razor-converter
相信自己,也许你就是下一个奇迹
版权声明:ASP.NET MVC总结基础篇(一)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。