手机版

ASP.NET MVC总结基础篇(一)

时间:2021-09-09 来源:互联网 编辑:宝哥软件园 浏览:

前几天要准备演讲,所以准备了一些关于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或者邮箱删除。