aspnetmvc知识点汇总.docx

上传人:b****6 文档编号:7107591 上传时间:2023-01-18 格式:DOCX 页数:55 大小:1.13MB
下载 相关 举报
aspnetmvc知识点汇总.docx_第1页
第1页 / 共55页
aspnetmvc知识点汇总.docx_第2页
第2页 / 共55页
aspnetmvc知识点汇总.docx_第3页
第3页 / 共55页
aspnetmvc知识点汇总.docx_第4页
第4页 / 共55页
aspnetmvc知识点汇总.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

aspnetmvc知识点汇总.docx

《aspnetmvc知识点汇总.docx》由会员分享,可在线阅读,更多相关《aspnetmvc知识点汇总.docx(55页珍藏版)》请在冰豆网上搜索。

aspnetmvc知识点汇总.docx

aspnetmvc知识点汇总知识点汇总ASP.NET框架技术第一章C#语言新特性6自动属性6可空类型(可以为空的值类型)6泛型类7对象初始化器7集合初始化器7var关键字7匿名类型8扩展方法8匿名类型和Lambda表达式8分部类10第二章Linq查询知识点详解11Linq标准查询语法格式11使用Linq进行数据查询的条件11Where关键字11Select关键字12Count()方法12Max()和Min()13First()和FirstOrDefault()13Average()方法13Linq的联合查询13Sum()14OrderBy()和OrderByDescending()14groupby分组15其他:

16第三章LinqToSql17Linq及其扩展17LinqToSql简介17LinqToSql设计器17DataContext数据库上下文类的常用属性和方法18LinqToSql常用操作18新增数据18修改数据19删除数据19数据查询20LinqToSql操作存储过程21LinqToSql调用数据库视图22LinqToSql调用数据库自定义函数22典型应用场景23场景1:

服务器获取动态表单数据23场景2:

使用LinqToSql进行分页24场景3:

在分层中如何使用LinqToSql24其他25第一章ASP.NETMVC绪论27MVC与ASP.NETMVC基础概念27MVC三大组件的相互关系27ASP.NETWebform模型和ASP.NETMVC模型的关系28ASP.NETMVC中的约定28其他29ASP.NETMVC进阶一31控制器相关31视图相关33其他35ASP.NETMVC进阶二37数据验证37数据验证的步骤37常用的验证标记37与验证相关的js文件38验证相关的Html辅助方法38在服务器端判断模型是否通过了验证(服务器端验证)38Action与View的数据传递39ViewData39ViewBag40TempData41ActionResult的实现类41ViewResult类42ContentResult类42RedirectToRouteResult类42RedirectResult类42JsonResult类42PartialViewResult类43FilePathResult类44FileContentResult类44FileStreamResult类44EmptyResult类44HttpStatusCodeResult类44其他44ASP.NETMVC进阶三46ASP.NETMVC中的AJAX应用46Ajax.ActionLink46Ajax.BeginForm47其他47ASP.NETMVC进阶四49ASP.NETMVC中使用母版页49ASPX视图引擎的母版页功能49Razor视图引擎50Razor基本语法50Razor视图引擎中母版页的用法51Html.RenderSection()53Razor视图中如何自定义辅助方法53在ASP.NETMVC中如何实现模块化开发?

54ASP.NETMVC数据分页55其他56ASP.NETMVC进阶五58重写Controller类的虚方法58OnActionExecutingOnActionExecuted58OnResultExecutingOnResultExecuted58OnAuthorization58OnException59ASP.NETMVC中的过滤器59IAuthorizationFilter59IActionFilter60IResultFilter60IExceptionFilter60ASP.NETMVC扩展案例631.ASP.NETMVC中使用富文本编辑器632.ASP.NETMVC中如何使用模态对话框633.ASP.NETMVC中如何实现通用弹框功能634.数据验证Remote的扩展应用:

635.ASP.NETMVC中实现多文件上传636.ASP.NETMVC应用程序自动发布637.ASP.NETMVC中实现通用权限管理模块63第一章C#语言新特性自动属性自动属性下面两种写法作用相同.前者属于自动属性.在使用自动属性时应该注意:

get和set访问器不能有具体的实现.可空类型可空类型(可以为空的值类型可以为空的值类型)对于值类型而言,C#规定:

在定义变量的同时必须要对其赋初值,否则可能无法通过编译器的编译.但是在某些情况下,用户事先是不知道变量的初始值是多少的.因为可以为空的值类型就显得很重要.1.值类型包括:

intdoublefloatdecimalboolchar2.可为空的语法为:

Nullable,其中T指代上面具体的某种值类型比如,可以为空的int类型:

Nullable;可以为空的bool类型:

Nullable3.可以为空的变量,在赋值时,可以将null赋值给它.例如:

Nullableage=null;4.Nullable可以简写为:

T?

例如:

Nullableage=null;等价于int?

age=null;5.下面两种写法都是错误的.string?

name=null;Student?

Stu=null;因为string和Student都是引用类型.6.可空值类型的常用属性:

HasValue:

布尔类型,如果字段不为null返回true,否则返回false.Value:

获取字段的值,如果该字段的值为null,那么调用Value属性会报错泛型类泛型类List:

T可以指代任何类型,比如:

intboolstringStudent.Dictionary:

字典类,其中T和K可以指代任何类型KeyValuePair:

键值对类型对象初始化器对象初始化器利用对象初始化器,在实例化一个类对象的同时可以为它的属性赋值.集合初始化器集合初始化器利用集合初始化器,可以在实例化一个集合对象时为它指定元素var关键字关键字var用于定义变量,变量的类型根据值来确定.vara=5;因为5是int类型,所以a的类型也是intvarstu=newStudent();因为通过new创建的是Student类型的变量,所以stu是Student类型.注意1:

varb;这种写法是错误的.原因是由var声明的变量,必须在定义的同时就赋初值.注意2:

通过var声明的变量一旦实例化后,就不能再更改它的数据类型.例如下面的代码:

vara=5;a=“zhangsan”;/a=”zhangsan”报错匿名类型匿名类型在实例化一个类对象时,可以无须事先定义该类,通过new即可动态创建类对象.扩展方法扩展方法扩展方法是指:

为以前定义好的类扩展其他方法.具体步骤如下:

1.首先,定义一个静态类(类的名称没有限制)2.其次,在静态类中定义一个静态方法(方法返回值根据实际情况自定定义)3.最后,给上述静态方法添加一个参数,且该参数必须被this关键字修饰.注意:

上面被this关键字修饰的参数的类型就是该扩展方法所扩展的类型下面的代码演示了如何为string类扩展名称为Convert的无参方法.匿名类型和匿名类型和Lambda表达式表达式1.什么是委托:

委托允许将一个方法作为参数,传递给另外一个方法.下面的代码演示了如果使用委托计算2个数字的加法减法乘法.委托和挂载的方法:

参数个数参数类型参数顺序返回值类型必须要一致.2.但是上述方式,使用很复杂.我们可以通过匿名方法来简写上述功能.=符号右侧的就是匿名方法.3.Lambda表达式也是匿名方法的一种.并且它的语法更加简洁明了.Lambda表达式分3部分:

参数|=|表达式下面的代码演示了如果使用Lambda表达式改写委托的示例.其中3个粉色的线框就是Lambda的3部分.注意1:

如果Lambda表达式只有1个参数,那么参数部分可以不用()包裹注意2:

Lambda表达式部分可以使用包裹,也可以不包裹.如果有多行代码,必须要使用包裹起来.4.在出现委托(Func参数)的地方,我们就可以写Lambda表达式.Func是一个泛型委托.该委托的参数类型为T,返回值类型为K.Lambda表达式的参数arg的类型为T,Lambda的表达式部分返回值类型为K.分部类分部类分部类允许将一个类的定义拆分到多个文件中.Winform应用程序和ASP.NETWebform应用程序中的每一个窗体所对应的后台类就采用了分部类技术.分部类的语法就是:

在类声明时,在关键字class前添加partial关键字.下面的代码将名称为Person的类拆分到了2个类文件中,分别是:

Person.cs文件和PersonExt.cs文件.第二章第二章Linq查询知识点详解查询知识点详解Linq标准查询语法格式标准查询语法格式vardata=from变量in集合对象where布尔表达式orderby排序字段descending|ascendingselect变量;解释:

select:

提取要查询的数据where:

筛选满足条件的元素from变量:

该变量指代集合中的单个元素in:

从哪里筛选元素orderby:

排序descending:

降序ascending:

升序注意:

where是可选的,如果不加where则表示筛选所有元素.示例代码:

使用使用Linq进行数据查询的条件进行数据查询的条件数据源(in后面的集合对象)必须直接或间接继承自IEnumerable或者说:

只要数据源继承自IEnumerable,我们就可以使用Linq从它里面检索数据Where关键字关键字筛选满足条件的元素,where关键字后面一定要跟布尔表达式Where后面的布尔表达式可以很简单,也可以是复杂的表达式.注意:

注意from关键字后面可以出现多个where表达式,这些表达式之间是并且的关系Select关键字关键字Select关键字用于提取要查询的数据.Select后面可以直接跟from后面的变量;也可以跟一个匿名类型.Count()方法方法Count(expressionFunc)解释:

T代表Lambda表达式中的参数部分,bool代表Lambda表达式部分为布尔类型Count方法用于获取满足条件的记录数量(有多少个满足条件的记录)Max()和和Min()Max(ExpressionFunc)和Min(ExpressionFunc)Max:

求最大值Min:

求最小值First()和和FirstOrDefault()First(ExpressionFunc)FirstOrDefault(ExpressionFunc)两个方法都是从集合中筛选满足条件的第一个元素.区别:

当没有从集合中筛选到满足的条件的元素时,First将会报错,FirstOrDefault则不会报错.Average()方法方法该方法用于计算平均值Linq的联合查询的联合查询将两个集合进行关联,然后从这两个集合中提取所需要的数据.语法格式:

vardata=from变量1in集合1from变量2in集合2where变量1.属性=变量2.属性selectnew.提示:

可以将N个集合进行关联(N=2)示例代码:

Sum()Sum(Func)其中T为参数的类型,K为返回值的类型.Sum()方法用于对数据进行求和运算.OrderBy()和和OrderByDescending()这两个方法用于实现对数据进行排序(升序和降序)groupby分组分组分组的标准语法:

vardata=from变量1in集合对象group变量1by变量1.属性into变量2select变量2;注意:

使用groupby分组后,将不能使用之前的变量1,需要通过into关键字定义一个新的变量2.新的变量指代的是分组后的每一组.关于分组的示例其他其他:

在进行数据查询时,.netframework为我们提供了2套方案:

一种是使用标准的linq查询语法=(frominselectwhereorderbyascdeningdescendinggroupbyintojoin);另一种方案是使用扩展方法=(WhereSelectFirstOrDefaultCountSumAverageMaxMinOrderByOrderByDescendingGroupByLastLastOrDefault)当然,我们也可以将2种混合起来使用.其他常用扩展方法Intersect:

取两个集合的交集Union:

取两个集合的并集Except:

去两个集合的差集Reverse:

反转序列中元素的顺序ForEach:

遍历集合中的元素第三章第三章LinqToSqlLinq及其扩展及其扩展Linq是一种数据查询语言(它能够从多种数据源中查询数据).现在基于Linq的扩展有:

1.LinqToObject:

主要是从内存对象中查询数据2.LinqToSql:

主要是从MSSqlServer数据库中操纵(查询新增修改删除)数据3.LinqToXML:

主要是从XML片段或XML文档中查询数据LinqToSql简介简介LinqToSql是一个微软在.NETFramework3.5中推出的一款ORM(ObjectRelationModel)实体框架.一个好的实体框架除了能够将数据表映射为实体类,还应该支持使用面向的思想去操纵关系型数据库.现在比较流行的ORM框架包括:

LinqToSqlEntityFrameworkNhibernate等.我们在使用LinqToSql的过程中,很少去手写SQL语句就能实现常见的数据增删改差操作.但是它的底层实现仍然是A.那么如何检测LinqToSql生成的SQL语句呢?

通过DataContext的Log属性即可实现检测功能.LinqToSql设计器设计器在服务器资源管理器中通过拖拽的方式,将数据表放置到LinqToSql的设计器区域后,VS会自动将这些数据表生成N+1(N为数据表的个数)个类.这些类大致可以分为2种:

一种是数据库上下文,另一种是实体类.数据库上下文类就是名称以DataContext结尾的类,它继承自Sytem.Data.Linq.DataContext.他们的作用分别是:

DataContext类用于和数据库交互(增删改查),每次进行数据库操作时,都应该先创建该类对象;而每一个实体类则和数据表相对应.DataContext的特性标记为Database,表示与数据库相关实体类的特性标记是Table,表示与数据表相关实体类中属性的特性标记是Column,表示与数据列相关DataContext数据库上下文类的常用属性和方法数据库上下文类的常用属性和方法CreateDatabase():

创建数据库DeleteDatabase():

删除数据库DatabaseExits():

判断数据库是否存在Log:

该属性用于检测和写入LINQTOSQL生成的SQL语句LinqToSql常用操作常用操作新增数据新增数据voidInsertOnSubmit():

实现每次新增1条记录voidInsertAllOnSubmit():

实现一次新增多条记录注意:

调用InsertOnSubmit后,一定要再调用DataContext.SubmitChanges();修改数据修改数据首先,查询到要修改的元素其次,改变元素相应的属性最后,调用dataContext.SubmitChanges()删除数据删除数据首先,查询到要删除的元素其次,调用voidDeleteOnSubmit()删除单个元素,如果要删除多个可以调用voidDelteAllOnSubmit()最后,调用dataContext.SubmitChanges();数据查询数据查询数据查询时,有2种常用的使用方式.一种是使用linq的标准语法;一种是使用Lambda表达式扩展方法.单表查询单表查询:

多表查询多表查询:

LinqToSql操作存储过程操作存储过程1.定义存储过程2.在服务器资源管理器中,将存储过程拖拽到LinqToSql的设计器3.通过DataContext调用存储过程,存储过程就是DataContext的一个方法.LinqToSql调用数据库视图调用数据库视图1.在SQLSERVER数据库中定义视图2.将视图从服务器资源管理器中拖拽到LinqToSql的设计器中3.在后台通过DataContext调用视图类(视图和表都是生成实体类,使用方式也完全一样)LinqToSql调用数据库自定义函数调用数据库自定义函数实现步骤和操作存储过程很相似.都是将自定义函数和存储过程翻译为C#中的方法,由DataContext进行调用.典型应用场景典型应用场景场景场景1:

服务器获取动态表单数据服务器获取动态表单数据做法一:

做法二:

上述两种做法都可以实现功能.做法一是先实现工资模版的新增,然后再新增工资条目.做法二是向工资模版对象中添加多个工资条目,然后向数据库提交工资模版.需要注意的是,做法一中为工资条目对象设置了工资模版ID,而做法二并没有为工资条目设置工资模版ID.但为什么最后效果却是一样的呢?

因为我们将工资条目添加到工资模版对象中时,linqtosql会自动将主外键关系的字段赋值.场景场景2:

使用使用LinqToSql进行分页进行分页分页功能需要使用两个函数进行组合:

Skip()和Take()Skip(intcount):

跳过count条数据Take(intcount):

从开始位置提取count条记录分页查询:

dataContext.XXX.Skip(pageIndex*pageSize).Take(pageSize)pageIndex是要提取的第几页记录.pageIndex=0pageSize是每页显示的记录条数场景场景3:

在分层中如何使用在分层中如何使用LinqToSqlLinqToSql是ADO.NET的一种替代方案,而ADO.NET属于数据层的范畴,因此应该将LinqToSql添加到数据层.又因为LinqToSql生成的类既包括了DataContext,又包括了实体类,所以如果要利用LinqToSql生成的实体类,就需要将这些实体类剪切到实体层中,然后在向DataContext中添加实体层的引用即可.当然,我们也可以不将LinqToSql生成的实体类剪切到实体层中,那么这样我们就需要额外重新编写实体层需要的实体类.其他其他EntitySet:

该类表示数据实体的集合System.Data.Linq.Table:

该类表示数据表对象如何判定通过LinqToSql进行数据的修改删除新增是否成功?

因为InsertOnSubmit方法和DataContext.SubmitChanges()方法都没有任何返回值,所以无法通过他们判断出是否操作成功.判断的标准就是:

如果不抛出异常就成功,抛出异常肯定就失败了.对于标识列(自动生成列)而言,在调用DataContext.XXX.InsertOnSubmit()后是无法获取标识列的值的;只有在调用DataContext.SubmitChanges()后方能获取标识列的值.在项目中,我们可以利用VS提供的LinqToSql设计器,快速的生成DataContext和实体类.也可以手写相应的类代码.在这里推荐大家使用VS提供的LinqToSql设计器,因为它更加方便快捷,基本都是通过拖拽的方式就实现我们想要的效果.除非设计器生成的代码不满足你的要求,我们才会采用第二种方案.LinqToSql也支持向数据库提交SQL语句.也支持数据库中定义的存储过程和自定义函数第一章第一章ASP.NETMVC绪论绪论MVC与与ASP.NETMVC基础概念基础概念MVC是Model-View-Controller的缩写.MVC将应用程序划分为3大组件:

模型视图控制器.MVC不是ASP.NET所特有,它只是一种开发理念.java中的struts2也是一种MVC模型.ASP.NETMVC从2008年发布1.0版以来,截至2014年ASP.NETMVC最新版本已经是5.0.ASP.NETMVC从1.0版开始,就已经开放源代码(源码地址:

).ASP.NETMVC官网地址:

http:

/MVC三大组件的相互关系三大组件的相互关系在控制器中可以直接调用视图和模型在视图中可以调用模型.模型不能调用视图模型能够限定视图中使用的数据,但视图中使用的模型应由控制器提供在视图中可以调用控制器(通过视图中表单的提交和点击超链接的方式调用)ASP.NETWebform模型和模型和ASP.NETMVC模型的关系模型的关系二者都是基于ASP.NETWeb框架构建的开发模型.所以ASP.NET中的一些功能可以被二者公用.Webform编程模型是典型的以事件驱动的web模型,而MVC则不是.Webform的URL地址是基于文件系统的,而MVC则是基于Action.ASP.NETMVC中的约定中的约定所有的控制器必须放到Controllers文件夹下所有的控制器类名必须以Controller结尾所有的模型应该放到Models目录下所有的视图文件都应该放到Views目录下.所有的控制器类都应该继承自Controller类(本质上是要继承Icontroller接口)在控制器类中的public方法被成为Action(行为)如果在相应的视图目录中没有找到视图文件,那么会寻找ViewsShared目录下名称相同的视图文件在Action中returnview(),默认会返回和Action名称一样的视图文件.在Global.asax全局应用程序类中注册了默认路由(名称为Default),默认路由指定了Controller默认为Home,Action默认为Index,参数id为可选参数.所以在URL地址中如果不输入controller默认访问Home控制器;如果不输入action默认访问名称为Index的action.http:

/localhost:

54321/解释:

根据默认路由规则,等价于=http:

/localhost:

54321/Home/Indexhttp:

/localhost:

54321/Home/Index/5解释

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1