配色: 字号:
ASPNETMVCSHOP
2016-09-22 | 阅:  转:  |  分享 
  
ASPNETMVCSHOP

在进行ASP.NETMVC开发时,遇到了以下知识点,现摘记如下。





ASP.NETMVC是微软官方提供的以MVC模式为基础的ASP.NETWeb应用程序(WebApplication)框架,它由Castle的MonoRail而来,目前最新版本是ASP.NETMVC5.1。



MVC是一种使用MVC(ModelViewController模型-视图-控制器)设计创建Web应用程序的模式。

Model(模型)表示应用程序核心(比如数据库记录列表)。

View(视图)显示数据(数据库记录)。

Controller(控制器)处理输入(写入数据库记录)。

MVC模式同时提供了对HTML、CSS和JavaScript的完全控制。

Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。

通常模型对象负责在数据库中存取数据。

View(视图)是应用程序中处理数据显示的部分。

通常视图是依据模型数据创建的。

Controller(控制器)是应用程序中处理用户交互的部分。

通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。







1.System.ComponentModel命名空间。



提供用于实现组件和控件运行时和设计时行为的类。此命名空间包括用于实现属性和类型转换器、绑定到数据源以及授权组件的基类和接口。



该命名空间中的类分为以下类别:



核心组件类。请参见Component、IComponent、Container和IContainer类。



组件授权。请参见License、LicenseManager、LicenseProvider和LicenseProviderAttribute类。



属性。请参见Attribute类。



说明符和持久性。请参见TypeDescriptor、EventDescriptor和PropertyDescriptor类。



类型转换器。请参见TypeConverter类。





2.System.ComponentModel.DataAnnotations命名空间。



提供用于为实体类定义元数据的特性类。







3.注解[Key]用于标示主键。







4.注解[Description]表示可视化设计器在引用组件成员时可以显示指定的说明。



数据验证相关的数据注解:



数据映射相关的数据注解:



[Key] 主键字段

[Column] 数据库列属性映射

[NotMapped] 不要创建对应的字段

[Table] 指定类将映射到的数据库表

[ForeignKey] 表示关系中用作外键的属性

[DatabaseGenerated] 指定数据库生成属性值的方式(EF不追踪属性的变化)

















数据显示相关的数据注解:



[DisplayName] 指定本地化的字符串(习惯用语类)

[Display] 指定本地化的字符串(习惯用语属性)

[DisplayFormat] 设置数据字段的格式

[ReadOnly] 指定该特性所绑定到的属性是只读属性还是读/写属性

[EditAble] 指示数据字段是否可编辑

[HiddenInput] 指示是否应将属性值或字段值呈现为隐藏的input元素

[ScaffoldColumn] 指定类或数据列是否使用基架

[UIHint] 指定动态数据用来显示数据字段的模板













[HttpPost]标识是在Controller中的相应方法上注释表单提交方式为post





其他



[DisplayColumn] 将所引用的表中显示的列指定为外键列

[Description]

可视化设计器在引用组件成员时可以显示指定的说明



(命名空间:System.ComponentModel.DescriptionAttribute)











5.C#语法中一个个问号(?)的运算符是指:可以为null的类型。





6.TheSystem.ComponentModel.DataAnnotations.SchemanamespaceprovidessupportforattributeclassesthatareusedtodefinemetadataforASP.NETMVCandASP.NETdatacontrols.



7.ViewBag不再是字典的键值对结构,而是dynamic动态类型,它会在程序运行的时候动态解析。所以在视图中获取它的数据时候不需要进行类型转换.



ViewBag是一个很神奇的东西,它是一个动态对象。简单点说就是你可以给它添加任何属性,这个属性可以是任何类型。



ViewBag的主要用途就是在Controller里给ViewBag添加属性值,并在View中读取这些值并显示出来。



8.Membership.ValidateUser方法(String,String)验证提供的用户名和密码是有效的。命名空间:System.Web.Security











9.FormsAuthentication.SetAuthCookie方法(String,Boolean)为提供的用户名创建一个身份验证票证,并将该票证添加到响应的Cookie集合中或URL中(如果使用的是无Cookie身份验证)。命名空间:System.Web.Security



publicstaticvoidSetAuthCookie(

stringuserName,

boolcreatePersistentCookie

)



//设置用户的cookie的值FormsAuthentication.SetAuthCookie(loginName,false);



//获取用户的cookieHttpCookiecookie=FormsAuthentication.GetAuthCookie(loginName,false);



//FormsAuthentication.SignOut只是注销掉此用户的登录信息,而且这个时间是在Application的Authentication事件后执行,当你再次操作时,因为用户的登录信息已经注销掉,通不过Form验证才会跳转到登录页面。





















10.在ASP.NETMVC中,要从一个Action跳转到另一个Action,通常是用一系列以“Redirect”开头的方法Redirect/RedirectToAction/RedirectToRoute之类的。

但是使用Redirect系列的方法进行跳转时,默认是使用GET方法的,也就是说,如果你的跳转请求带有参数,那么这些参数将全部暴露在跳转后的url中,增加了不安全性(特别是如果参数中包含密码、密钥等等敏感数据)



于是就想到了用POST方法传递数据,这样至少一般的访问者无法从url中获取敏感信息。但是仔细查阅了MSDN和StackOverflow,得到的答案是“Redirect方法不支持POST”。



好在StackOverflow上找到一个回答点我,倒是给我一些启发。直接POST不行,那就间接POST,先通过一个GET方法获取某个页面,然后以这个页面为中介将数据POST给真正要处理请求的页面。





11.ModelState.AddModelError("userPwd","请输入密码!");ModelState是一个字典类型,这句话的作用是向ModelState中添加一条错误信息,第一个参数是Key,第二个参数是Value。



??



12.thrownewSystem.NotImplementedException();就是没有实现接口或抽象类要求的方法时,出现的异常.??

??

??

13.AjaxOptions类表示用于在ASP.NETMVC应用程序中运行Ajax脚本的选项设置。命名空间:System.Web.Mvc.Ajax



14.MVC视图中,Javascripts代码被放于下面的Razor代码中(@sectionScripts{})。通过@script.Render方法,你可以预定义一组js文件,在最终页面上,asp.netmvc自身会采用比较优化的压缩技术和缓存技术,将多个js压缩优化并且整合为1个体积较小的js,但对于外部使用来说,功能是不会出现任何区别的,从而提高了页面体验。而压缩和缓存的过程都是通过框架自动实现的,你只需要按照缩进和自己的习惯写优雅的js代码即可。





15.//@model参考型别是IEnumerable泛型(VS2012),如果需要转换型别,可以使用ToList()转换成List泛型对象。





16.Html.BeginForm与Ajax.BeginForm都是MVC架构中的表单元素,它们从字面上可以看到区别,即Html.BeginForm是普通的表单提交,而Ajax.BeginForm是支持异步的表单提交,这对于我们开发者来说是一个福音,我们不用再自己去用JQ代码了,直接用MVC自代的Ajax.BeginForm就可以很容易的完成一个异步的表单提交动作。

@using(Html.BeginForm()){}//提交到当前页面



@using(Html.BeginForm(new{})){}//提交到当前页面,并可以传递参数



@using(Html.BeginForm("action","controller")){}//提交到指定controller下的action中



@using(Html.BeginForm("action","controller",FormMethod.POST)){}//提交到指定controller下的action中,并指定提交方式

??

??

17.:@Html.ValidationSummary()用于返回表单正在背景考证的效果。

1.input注明要验证是属于前台的,当某各原因导致前台无法进行验证,比如js没有成功加载的,



当后台if(ModelState.IsValid)失败后,错误信息就会显示到@Html.ValidationSummary()



2.当前后台验证都通过,但某些逻辑验证没有通过,比如用记名密码错误的,可以手工添加错误信息,



ModelState.AddModelError("","Thecurrentpasswordisincorrectorthenewpasswordisinvalid.");这个也会显示到@Html.ValidationSummary()







18.Razor通过在代码块中使用“@:字符序列”来显式指明内容块的开始。@:序列表明该行后面的内容应该被视为内容块。





19.FormCollection用来在controller中获取页面表单元素的数据。它是表单元素的集合,包括元素。



RepresentsacollectionofFormobjects.



Namespace:System.Windows.Forms



20.编辑程序时,只有生成了解决方案,才能选择视图创建时等的模型类。





21.在Html辅助方法中若要输出减号,必须用"_",即下划线代替.





22.并不是加上DataType属性的ErrorMessage参数,就一定会在View页面中显示错误信息,因为VS的版本限制问题,有些不支持页面的JAVASCRIPT.此时,可以利用TextBoxFor辅助方法,并指定一个data-val-email属性即可.如@Html.TextBoxFor(model=>model.email,new{data_val_email="请输入Email地址"})



同时,也可以通过更改script代码或者Jquery的有效验证信息来操作.







23.location.reload();



reload()方法用于刷新当前文档。



reload()方法类似于你浏览器上的刷新页面按钮。



如果把该方法的参数设置为true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。这与用户在单击浏览器的刷新按钮时按住Shift健的效果是完全一样。







24.ASPMVC中NT$@(Model[i].Product.Price)什么意思,貌似NT表示后面的符号直接输出.





25.由于案例中Product&ProductCategory之间是多对一的关系,因此,可以在该数据模型中添加导览属性(navigationProperty),



ProductCategory中为:publicvirtualICollectionProducts(get;set;);



Product中为:publicvirtualProductCategoryProductCategory(get;set;);



其中virtual关键字表示延迟装入功能.







26.应用程序启动时自动升级数据库(通过应用所有挂起的迁移)。可通过注册MigrateDatabaseToLatestVersion数据库初始值设定项来实现这一点。数据库初始值设定项只是包含用于确保数据库安装正确的某种逻辑。首次在应用程序进程(AppDomain)中使用上下文时,将运行此逻辑。



即在文件Global.asax中的Application_Start方法上加上System.Data.Entity.Database.SetInitializer()方法,并添加System.Data.Entity.MigrateDatabaseToLatestVersion()参数,而参数System.Data.Entity.DropCreatDatabaseIfModelChanges是重新建立,不利于保存原始数据.



即最终的代码为:System.Data.Entity.Database.SetInitializer(newSystem.Data.Entity.MigrateDatabaseToLatestVersion());





27.MD5的全称是message-digestalgorithm5(信息-摘要算法,在90年代初由mitlaboratoryforcomputerscience和rsadatasecurityinc的ronaldl.rivest开发出来,经md2、md3和md4发展而来。引用usingSystem.Securwww.shanxiwang.netity.Cryptography;



C#md5加密:

stringa;//加密前数据

stringb;//加密后数据

b=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(a,"MD5")







28.UriBuilder类,提供用于统一资源标识符(Uri)自定义的构造函数,并修改UriUri类。命名空间:System







UriBuilder类提供了一种方便的方式来修改的内容Uri而无需创建一个新的实例Uri为每次修改的实例。



UriBuilder属性可用来为只读的读/写访问Uri属性,以便可以修改它们。





名称 说明

System_CAPS_pubmethod UriBuilder()

初始化UriBuilder类的新实例。



System_CAPS_pubmethod UriBuilder(String)

用指定的URI初始化UriBuilder类的新实例。



System_CAPS_pubmethod UriBuilder(String,?String)

新实例初始化UriBuilder与指定的方案和宿主的类。



System_CAPS_pubmethod UriBuilder(String,?String,?Int32)

新实例初始化UriBuilder类,具有指定的方案、主机和端口。



System_CAPS_pubmethod UriBuilder(String,?String,?Int32,?String)

新实例初始化UriBuilder类,具有指定的方案、主机、端口号和路径。



System_CAPS_pubmethod UriBuilder(String,?String,?Int32,?String,?String)

新实例初始化UriBuilder类使用指定的方案、主机、端口号、路径和查询字符串或段标识符。



System_CAPS_pubmethod UriBuilder(Uri)

使用指定的UriBuilder实例初始化Uri类的新实例。





名称 说明

System_CAPS_pubproperty Fragment

获取或设置URI的片段部分。



System_CAPS_pubproperty Host

获取或设置的域名系统(DNS)主机名或服务器的IP地址。



System_CAPS_pubproperty Password

获取或设置与用户访问URI相关联的密码。



System_CAPS_pubproperty Path

获取或设置由URI引用的资源的路径。



System_CAPS_pubproperty Port

获取或设置URI的端口号。



System_CAPS_pubproperty Query

获取或设置在URI中包括的任何查询信息。



System_CAPS_pubproperty Scheme

获取或设置URI的方案名称。



System_CAPS_pubproperty Uri

获取Uri构造由指定的实例UriBuilder实例。



System_CAPS_pubproperty UserName

与用户访问URI相关联的用户名。







29.SmtpClient类允许应用程序使用简单邮件传输协议(SMTP)发送电子邮件。命名空间:System.Net.Mail



构造函数如下:

名称 说明

System_CAPS_pubmethod SmtpClient()

新实例初始化SmtpClient类通过使用配置文件设置。



System_CAPS_pubmethod SmtpClient(String)

新实例初始化SmtpClient通过使用指定的SMTP服务器发送电子邮件的类。



System_CAPS_pubmethod SmtpClient(String,?Int32)

新实例初始化SmtpClient通过使用指定的SMTP服务器和端口来发送电子邮件的类。





属性如下:



名称 说明

System_CAPS_pubproperty ClientCertificates

指定应使用哪个证书来建立安全套接字层(SSL)连接。



System_CAPS_pubproperty Credentials

获取或设置用来对发件人进行身份验证的凭据。



System_CAPS_pubproperty DeliveryFormat

获取或设置所使用的传递格式SmtpClient发送电子邮件。



System_CAPS_pubproperty DeliveryMethod

指定如何发送的电子邮件将处理消息。



System_CAPS_pubproperty EnableSsl

指定是否SmtpClient使用安全套接字层(SSL)加密的连接。



System_CAPS_pubproperty Host

获取或设置一个或多个SMTP交易记录所用的主机的IP地址。



System_CAPS_pubproperty PickupDirectoryLocation

获取或设置应用程序在其中保存邮件以处理由本地SMTP服务器的文件夹。



System_CAPS_pubproperty Port

获取或设置用于SMTP事务的端口。



System_CAPS_pubproperty ServicePoint

获取用于传输电子邮件的网络连接。



System_CAPS_pubproperty TargetName

获取或设置服务提供程序名称(SPN)时使用扩展的保护用于进行身份验证。



System_CAPS_pubproperty Timeout

获取或设置一个值,指定的后的时间量同步Send调用会超时。



System_CAPS_pubproperty UseDefaultCredentials

获取或设置Boolean值,该值控制是否DefaultCredentials随请求一起发送。





方法:



名称 说明

System_CAPS_pubmethod Dispose()

将一条QUIT消息发送到SMTP服务器、正常结束TCP连接,并释放所有资源的当前实例所使用的SmtpClient类。



System_CAPS_protmethod Dispose(Boolean)

将一条QUIT消息发送到SMTP服务器、正常结束TCP连接时,释放使用的当前实例的所有资源SmtpClient类,并可根据需要释放托管资源。



System_CAPS_pubmethod Equals(Object)

确定指定的对象是否等于当前对象。(继承自Object。)



System_CAPS_protmethod Finalize()

在垃圾回收将某一对象回收前允许该对象尝试释放资源并执行其他清理操作。(继承自Object。)



System_CAPS_pubmethod GetHashCode()

作为默认哈希函数。(继承自Object。)



System_CAPS_pubmethod GetType()

获取当前实例的Type。(继承自Object。)



System_CAPS_protmethod MemberwiseClone()

创建当前Object的浅表副本。(继承自Object。)



System_CAPS_protmethod OnSendCompleted(AsyncCompletedEventArgs)

引发SendCompleted事件。



System_CAPS_pubmethod Send(MailMessage)

将指定的消息发送到SMTP服务器以进行传递。



System_CAPS_pubmethod Send(String,?String,?String,?String)

将指定的电子邮件发送到SMTP服务器以进行传递。邮件发件人、收件人、主题和消息正文使用指定String对象。



System_CAPS_pubmethod SendAsync(MailMessage,?Object)

将指定的电子邮件发送到SMTP服务器以进行传递。此方法不会阻止调用线程,并允许调用方将对象传递给该操作完成时调用的方法。



System_CAPS_pubmethod SendAsync(String,?String,?String,?String,?Object)

将一封电子邮件发送到SMTP服务器以进行传递。邮件发件人、收件人、主题和消息正文使用指定String对象。此方法不会阻止调用线程,并允许调用方将对象传递给该操作完成时调用的方法。



System_CAPS_pubmethod SendAsyncCancel()

取消异步操作以发送电子邮件。



System_CAPS_pubmethod SendMailAsync(MailMessage)

将指定的消息发送到SMTP服务器以进行异步操作的形式传递。



System_CAPS_pubmethod SendMailAsync(String,?String,?String,?String)

将指定的消息发送到SMTP服务器以便以异步操作的形式交付。。邮件发件人、收件人、主题和消息正文使用指定String对象。



System_CAPS_pubmethod ToString()

返回表示当前对象的字符串。(继承自Object。)





30.MailMessage类表示可以使用SmtpClient类发送的电子邮件。命名空间:System.Net.Mail





构造函数:



名称 说明

System_CAPS_pubmethod MailMessage()

初始化MailMessage类的空实例。



System_CAPS_pubmethod MailMessage(MailAddress,MailAddress)

使用指定的MailAddress类对象初始化MailMessage类的新实例。



System_CAPS_pubmethod MailMessage(String,String)

使用指定的String类对象初始化MailMessage类的新实例。



System_CAPS_pubmethod MailMessage(String,String,String,String)

初始化MailMessage类的新实例。





属性:



名称 说明

System_CAPS_pubproperty AlternateViews

获取用于存储邮件正文的替代形式的附件集合。



System_CAPS_pubproperty Attachments

获取用于存储附加到此电子邮件的数据的附件集合。



System_CAPS_pubproperty Bcc

获取包含此电子邮件的密件抄送(BCC)收件人的地址集合。



System_CAPS_pubproperty Body

获取或设置邮件正文。



System_CAPS_pubproperty BodyEncoding

获取或设置用于邮件正文的编码。



System_CAPS_pubproperty BodyTransferEncoding

获取或设置用于消息正文的传输编码。



System_CAPS_pubproperty CC

获取包含此电子邮件的抄送(CC)收件人的地址集合。



System_CAPS_pubproperty DeliveryNotificationOptions

获取或设置此电子邮件的发送通知。



System_CAPS_pubproperty From

获取或设置此电子邮件的发信人地址。



System_CAPS_pubproperty Headers

获取与此电子邮件一起传输的电子邮件标头。



System_CAPS_pubproperty HeadersEncoding

获取或设置此电子邮件的用户定义的自定义标题使用的编码。



System_CAPS_pubproperty IsBodyHtml

获取或设置指示邮件正文是否为Html格式的值。



System_CAPS_pubproperty Priority

获取或设置此电子邮件的优先级。



System_CAPS_pubproperty ReplyTo

已过时。获取或设置邮件的回复地址。



System_CAPS_pubproperty ReplyToList

获取或设置邮件的回复地址的列表。



System_CAPS_pubproperty Sender

获取或设置此电子邮件的发件人地址。



System_CAPS_pubproperty Subject

获取或设置此电子邮件的主题行。



System_CAPS_pubproperty SubjectEncoding

获取或设置此电子邮件的主题内容使用的编码。



System_CAPS_pubproperty To

获取包含此电子邮件的收件人的地址集合。(既然是集合,就拥有集合的相关操作方法,如ADD等)





方法:



名称 说明

System_CAPS_pubmethod Dispose()

释放由MailMessage使用的所有资源。



System_CAPS_protmethod Dispose(Boolean)

释放由MailMessage占用的非托管资源,还可以另外再释放托管资源。



System_CAPS_pubmethod Equals(Object)

确定指定的对象是否等于当前对象。(从Object继承。)



System_CAPS_protmethod Finalize()

在垃圾回收将某一对象回收前允许该对象尝试释放资源并执行其他清理操作。(从Object继承。)



System_CAPS_pubmethod GetHashCode()

作为默认哈希函数。(从Object继承。)



System_CAPS_pubmethod GetType()

获取当前实例的Type。(从Object继承。)



System_CAPS_protmethod MemberwiseClone()

创建当前Object的浅表副本。(从Object继承。)



System_CAPS_pubmethod ToString()

返回表示当前对象的字符串。(从Object继承。)







31.#if与#endif指示词可以设置特定程序代码区段是否要出现在特定方案配置下.





32.PagedList类表示分页的列表,其中包含项和一个继续标记的列表。命名空间:System.Fabric.Query,也可以通过NUGET管理器添加.



MVC中操作分页可以通过以下三个过程进行.



32.1取得IEnumerable或IQueryable型别的源数据,或继承这两个型别的子类别.



32.2通过ToPagedList扩充方法,取得分页后的结果信息,并将信息传入View里.



32.3在View页面中通过@Html.PagedListPager辅助方法输出分页所需的分页导览链接.?

献花(0)
+1
(本文系网络学习天...首藏)