ASP.NET web控件及其对象小结

验证控件

非空验证

RequiredFieldValidator

 

ControlToValidate="验证控件对象ID"

属性

说明

ControlToValidate

要验证控件的ID,所有验证控件都有该属性

Text

验证出错时的提示,所有验证控件都有该属性

ErrorMessage

提交给汇总控件的错误信息。如果Text属性为空,则验证出错,将显示该信息,所有验证控件都有该属性

密码与确认密码是否一致

CompareValidator

 

 

属性

说明

ControlToValidate

要验证的控件的ID,所有验证控件都有该属性

ControlToCompare

用来与要验证的控件进行比较的控件的ID

Type

设置比较类型(比如字符串、整形等),不同类型的比较会出错

Operator

设置比较运算符,比如等于、大于等于、小与等于、大于和小于。默认设置为等于(Equal)

ValueToCompare

用于比较的值

对控件的值进行范围验证

RangeValidator

 

正则表达式验证

ReqularExpressionValidator

 

ReqularExpression属性

 

  • 常见的正则表达式如下:
  1. 非负数(正整数+0):^\d+$
  2. 正整数:^[0-9]*[1-9][0-9]*$
  3. 匹配中文字符的正则表达式:[\u4e00-\u9fa5]
  4. 匹配双字节字符(包括汉字在内):[^\x00-\xff]
  5. 货币(非负数,要求小数点后有两位数字):\d+(\.\d=d)?
  6. 货币(正数或负数):(-)?\d+(\.\d=d)?

 

自定义验证的方式

CustomValidator

 

可以验证用户名是否存在

属性/事件

说明

ControlToValidate

要验证的控件ID,所有验证控件都有该属性

ClientValidationFunction

设置客户端验证的脚本函数

ServerValidate (事件)

服务器端验证的函数

 

验证错误消息汇总

ValidationSummary

 

 

属性

说明

ShowMessageBox

是否显示弹出的提示消息

ShowSummary

是否显示该报告内容

 

FileUpload文件上传控件

属性

说明

HasFile

控件是否含有将要上传的文件

FileName

上传文件的文件名

SaveAs (函数)

将上传文件保存到服务器制定路径

 

SiteMapPath站点地图控件

 

配合站点地图同时使用

 

 

 

 

TreeView控件

配合XML文件使用

XML文件内容和站点地图内容一致,去掉siteMap

 

 

 

绑定数据源选择Xml

 

 

 

 

ASP.NET常见的对象

对象名

说明

Page对象

Page对象是指向页面自身的方式,在整个页面的执行期内,都可以使用该对象

Request对象

此对象封装了由Web浏览器或其他客户端生成的HTTP请求的细节(参数、属性和数据),提供从浏览器读取信息或读取客户端信息等功能,用于页面请求

Response对象

此对象封装了返回到HTTP客户端的输出,用于向浏览器输出信息或发送指令

Session对象

为某个用户提供共享信息,作用于用户会话期

Cookie对象

保存在页面客户端的一种储存信息的方式

Application对象

为所有用户提供共享信息,作用于整个应用程序运行期

Server对象

它提供了服务器端的一些属性和方法,如页面文件的绝对路径等

 

Page对象

在ASP.NET中,基本内置对象包括Request对象、Response对象、Session对象、Cookie对象、Application对象和Server对象。所有页面的基类对象都是Page。

每一个aspx页面都对应一个页面类,它继承于System.Web.UI.Page类。Page对象就是此页面类的实例,即每一个页面就是一个Page对象。aspx页面在运行的过程中被编译为Page对象,并缓存于服务器内存中。

属性

说明

IsPostBack

Bool值,指示该页面是否为响应客户端回发而加载,或其是否正被首次加载或访问

IsValid

Bool值,指示该页面验证是否成功

MasterPageFile

用于获取或设置母版页的文件名

 

页面传值

在ASP.NET中,页面传值有多种方式。

Form表单提交数据(POST)

URL参数传值(GET)

Session、Cookie或Application等内置对象来传递数据

 

Request对象

Request对象用于检索从浏览器向服务器所发送的请求中的信息,它提供对当前页请求的访问,包括标题、Cookie和查询字符串等。

属性/方法

说明

QueryString

取得Get请求中的数据

Form

取得Post请求中的数据

Request

取得Post或Get请求中的数据

  • 使用 QueryString属性获取页面间传值(GET)

在两个页面之间,常用URL参数传值,是常见的Get传值方式

传值:URL?参数名=值

接收:值=Request.QueryString[“参数名”]

 

  • 使用Form属性传值(POST)

通过Form表单提交的数据(通常是POST传值),可以使用Request.Form属性来获取。

 

 

Response对象

Response对象用于将数据从服务器发送回浏览器。它允许将数据作为请求的结果发送到浏览器中,并提供有关响应的信息,可用于在页面中输入数据、在页面中跳转,还可以传递各个页面的参数。

属性/方法

说明

Cookies

获取响应的Cookie集合

Redirect

将客户端重定向到新的URL

Write

将信息写入HTTP响应输入流

  1. Write方法,向页面写入信息(包括js脚本)

Response.Write("ASP.NET,你好!");

Response.Write("<script>alert('删除成功!');</script>");

  1. Redirect方法,使当前页跳转到指定页面

Response.Redirect("Register.aspx");

 

Session对象

Session对象用于存储在多个页面之间传递的特定用户的信息。Session是服务端数据,其储存于服务端。针对每个浏览器的连接,系统会建立单独的会话,并自动分配一个SessionID来标识。

赋值:Session[“名称”]=值;

 取值:变量=Session[“名称”];

 

 

Cookie对象

Cookie用于在客户端浏览器中存储少量信息,通常存放非敏感的用户信息,保存的时间可以根据用户的需要进行设置。并非所有的浏览器都支持Cookie,数据信息是以文本的形式保存在客户端,不占用服务端资源。

Response.Cookies[“名称”].Value=值;

String 变量名=Request.Cookies[“名称”].Value;

HttpCookie cookie = new HttpCookie(“名称”,值);

Response.Cookies.Add(cookie);

 

由于Cookie是保存在客户端的文本文件,为确保其安全性,一般不要将敏感的信息保存在Cookie中,如用户密码等。如果没有设定Cookie的过期时间,则Cookie的生命周期仅保持到关闭浏览器为止。如果将过期时间设定为MaxValue,则Cookie永不过期。Cookie的大小限制为4KB ,所以Cookie中不能存储大量数据。

Expires属性设置Cookie的过期时间

 

Application对象

Application对象用于共享应用程序级信息,即多个用户共享一个Application对象。一旦Application对象被创建,在整个应用程序中都可以访问该对象的值,直到应用程序结束。

 

赋值:Application[“名称”]=值;

取值:变量= Application[“名称”];

 

Server对象

Server对象提供了对服务器上的方法和属性的访问,用于访问服务器上的资源。其类名称是HttpServerUtility。

属性/方法

说明

HtmlEncode

对字符串进行编码,使其在浏览器中正确显示

HtmlDecode

与HtmlEncode相反,对已编码的内容进行解码

MapPath

返回Web服务器上与指定虚拟路径相对应的物理文件路径

UrlEncode

对URL地址进行编码,URL在传输含有“#”、“&”等特殊符号的参数时,需要进行编码。否则其后的内容不会被识别

UrlDecode

与UrlEncode相反,对已编码的URL进行解码

 

三层架构

 

  • 数据访问层
  • 实体类
  • 业务逻辑层
  • 表现层

三层架构简介

分层设计可避免模块间相同功能的重复编写,达到减少模块间的耦合性,提高独立性的系统设计要求。

三层架构的设计,即数据访问层、业务逻辑层和表现层。

数据访问层:主要用于实现对数据库的访问和操作。

业务逻辑层:主要包含业务逻辑代码,以及作为表现层和数据访问层之间的通讯桥梁,负责数据的传递和处理。

表现层:用于显示数据和接收用户输入的数据,为用户提供可以交互的操作界面及表现逻辑。

在项目中使用三层架构的优势如下:

适于变化,利于维护

项目需求经常会发生变化,三层架构将功能模块分离,提高了项目的可维护性和代码的可重用性。

适用于协作开发

目前,多数项目是团队多人协作开发的,有的负责界面设计,有的负责数据库操作模块,三层架构将各个功能模块分离,各自负责各层的模块,有利于协作开发。

主流趋势

在企业级的开发中,三层架构是基本要求,大多数项目都会采用三层架构。

 

模型层

由于三层之间存在数据交互,所以需要中间介质——模型层,模型层包含所有与数据表相对应的实体类。三层之间通过传输实体类对象来实现通讯。

模型层的命名

常见的命名方式有Model、Models或用解决方案名+Model的格式命名。模型层是单个C#类库项目,模型层中的实体类和数据表相对应。

实体类结构

实体类对应数据表字段编写出实体类的属性即可。除了构造方法,实体类通常不含其他方法。

 

 

数据访问层(Data Access Layer,DAL)负责与数据库的交互,运行数据库查询并执行更新。

数据访问层的命名

数据访问层以DAL命名,或以解决方案名称+DAL格式命名。

数据访问类中的方法

由于数据访问类提供的是针对数据表的增、删、改和查操作,所以类的方法围绕这些操作来编写。

增(Create)

删(Delete)

改(Update)

查(Select)

 

业务逻辑层(Business Logic Layer,BLL)包含一系列执行于数据上的操作,数据通过实体类的形式体现,而操作则在业务流程中的每个步骤中体现。

业务逻辑层的命名

业务逻辑层通常命名为BLL,或用解决方案名称+BLL的格式命名。每个实体类通常在业务逻辑层有对应的业务逻辑类。类的格式为实体类名称+Manager。

业务逻辑层的方法

每个业务逻辑类的方法用于处理具体的业务规则。

表现层由两个主要组件组成:用户界面和表现层逻辑(UI逻辑)。

表现层的命名

通常以解决方案名称+Web格式命名,或用解决方案名称+UI格式命名。

表现层的方法

表现层的方法主要是控件的事件处理方法,以及适用于整个站点的通用方法。

 

数据绑定控件

ASP.NET中包含一系列的控件,专用于显示独立数据源的数据,可以通过这些控件,以可视化的方式查看绑定数据之后的效果。这些控件称为数据绑定控件。

数据绑定控件分列表型控件、表格型控件和层次型控件。

所有的数据绑定控件都从BaseDataBoundControl抽象类派生。

 

属性/方法

描述

DataSource

指定数据绑定控件的数据来源,程序会从该数据源中获取数据并显示

DataBind()

显示绑定的数据

指定数据绑定控件的DataSource(数据源)属性,并调用DataBind()方法,才能够显示绑定的数据。

控件指定的数据源必须可枚举,实现了ICollection、IEnumerable或IListSource接口的对象都可以绑定。

 

DropDownList控件

DropDownList控件用于显示下拉列表框,且只能选择下拉列表框中的一项。DropDownList控件在客户端被解释成<select></select>的HTML标记。

 

属性

描述

AutoPostBack

用于设置当下拉列表项发生变化时,是否主动向服务器提交整个表单,默认是false,即不主动提交。如果设置为true,则可执行SelectedIndexChanged事件处理方法

DataTextField

设置列表项的可见部分的文字

DataValueField

设置列表项的值部分

Items

获取控件的列表项的集合

SelectedIndex

获取或设置DropDownList控件中的选定项的索引

SelectedItem

获取列表控件中索引最小的选定项

SelectedValue

获取列表控件中选定项的值,或选择列表控件中包含指定值的项

 

GridView控件

GridView控件以表格的形式显示数据源的数据,每列表示一个字段,而每行表示一条记录。

属性

描述

AllowPaging

设置是否启用分页功能

Columns

获取GridView控件中列字段的集合

PageCount

获取在GridView控件中显示数据源记录所需的页数

PageIndex

获取或设置当前显示页的索引

PageSize

设置GridView控件每次显示的最大记录条数

 

DataList控件

DataList控件使用模板与定义样式来显示数据,并执行数据的选择、删除和编辑。DataList控件最大的特点是通过模板来定义数据的显示格式,需要通过页面语法设计出较为美观的界面,不同于GridView控件每行只能显示一条记录,DataList可以在一行显示多条记录。

 

 <ItemTemplate>来重复显示

属性

描述

RepeatColumns

DataList中显示的列数默认是0

RepeatDirection

DataList的显示方式有Horizontal和Vertical两个值,分别代表水平和垂直显示

 

Repeater控件

 <ItemTemplate>来重复显示

Repeater控件完全由模板驱动,可以任意设置其输出格式。Repeater控件不生成任何类似于“<Table>”的布局代码,它为显示数据库记录提供了最大限度的灵活性。在使用Repeater控件时,只能在“源”视图进行编辑,如图所示。

 

 

配置文件

ASP.NET站点开发完成后,需要部署到IIS服务器。由于开发环境下使用的数据库通常不同于生产环境下使用的数据库,所以需要修改连接字符串。

为便于修改连接字符串,通常将其保存到站点的配置文件中。

ASP.NET站点的配置文件是web.config。

在ASP.NET中有两种配置文件,分别是machine.config和Web.config。它们都是基于XML格式的文件,但各自作用域不同。

machine.config

machine.config文件是控制整个计算机所有ASP.NET应用程序的配置,又称为服务器配置文件。

它提供了整个服务器中ASP.NET程序的默认配置,影响所有本机的ASP.NET应用程序。

web.config

web.config文件是ASP.NET应用程序的站点配置文件,默认在站点的根目录。

一个站点可以有多个web.config文件存放于站点的子目录。

多个web.config构成了一个树型层次结构的配置文件系统。

machine.config文件位于最高层,控制整个计算机中所有ASP.NET站点的配置。

ASP.NET应采用就近原则处理节点冲突。

如果本层配置文件节点和上层配置文件节点相冲突,则以本层节点设置为准。如果本层没有设置,则以上层配置文件节点为准。

 

web.config

数据库连接字符串放到

<connectionStrings>

<add name="ConnStr" connectionString="Data Source=.;Initial Catalog=DBstudent;Integrated Security=True"/>

</connectionStrings>

在DBHelper类中引用System.Configuration

在类中使用using System.Configuration;导入空间

 

private string strconn = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;

 

web.config文件的加密

使用C:\Windows\Microsoft.NET\Framework64\v4.0.30319下的aspnet_regiis.exe进行加密进入CMD命令加密

加密语法:

aspnet_regiis –pef "connectionStrings" "web项目的路径" –prov "DataProtectionConfigurationProvider"

解密语法:

aspnet_regiis –pdf  "connectionStrings" "web项目路径"。

 

(1)加密的数据库连接字符串在站点运行时会自动解密,以供程序使用。

(2)加密和解密必须在同一台机器上完成。如果在开发的机器上加密数据库连接字符串,解密还原连接字符串也必须在此机器上完成。

 

身份验证和授权

身份验证

通过ASP.NET强大的安全架构,身份验证可以基于配置文件来完成。它的身份验证系统很灵活,常见的有4种验证模式。

身份验证模式

说明

Windows

默认使用Windows集成验证

Forms

为验证用户,当前请求被重定向到指定的页面,如果用户身份合法,则ASP.NET系统创建当前用户的身份凭证。通过身份凭证即可完成身份验证

Passport

一种商业验证服务,基于Microsoft Passport的身份验证

None

无验证,允许匿名访问,或手动编码控制用户访问

Forms验证

ASP.NET的站点程序,通常使用Forms验证。

Forms验证称为表单验证,主要的操作方法是在web.config文件中设置Forms节点。

Forms节点代码如下:

<authentication mode="Forms">

      <forms loginUrl="~/Login.aspx" timeout="2880" defaultUrl="~/"/>

 </authentication>

属性

说明

name

用于指定身份验证产生的Cookie的名称,默认值是.ASPXAUTH

loginUrl

为登录,重定向到的URL,默认值是default.aspx

timeout

身份票据的有效时间,以分钟为单位,即Cookie的过期时间

path

Cookie的指定路径。默认为“/”,表示该Cookie作用于整站

 

授权

在web.config文件中设置Forms节点后,需对匿名用户或指定用户访问页面执行权限控制,称为“授权”。web.config文件的配置代码如下:

<authorization>

      <deny users="?"/>

      <allow roles="admin"/>

</authorization>

 

Authorization节点用于配置授权信息,它包括两种子节点:deny(拒绝)和allow(允许)。

deny和allow的常用属性:

属性

说明

user

一个用逗号分隔的用户名列表,列表中的用户被授予(或拒绝)对资源的访问,其中“?”代表匿名用户;“*”代表所有用户

roles

用逗号分隔的角色列表,这些角色被授予(或拒绝)对资源的访问

在web.config文件中,设置authentication和authorization节点,代码如下:

 <authentication mode="Forms">

      <forms loginUrl="~/Login.aspx" timeout="2880" defaultUrl="~/"/>

</authentication>

<authorization>

      <allow users="*"/>

</authorization>

 

在web.config文件中,设置和system.web同级的location节点,设置ProductPay.aspx页面不允许匿名访问。代码如下:

<location path="ProductPay.aspx">

    <system.web>

      <authorization>

        <deny users="?"/>

      </authorization> 

    </system.web>

  </location>

在login.aspx页面产生“身份票据”,代码如下:

using System.Web.Security;

FormsAuthentication.RedirectFromLoginPage("userName", true);

 

如果要注销用户的登录,则编写如下代码即可:

FormsAuthentication.SignOut();

 

用户密码加密:

使用MD5方式为站点用户的密码进行加密。步骤如下:

(1)修改注册页面代码,使用MD5加密,代码如下:

user.UserPwd= FormsAuthentication.HashPasswordForStoringInConfigFile(this.txtPwd.Text, "md5");

(2)修改用户登录页面代码,使用MD5加密后比对用户密码,如果输入的

      密码在加密后与数据库保存的密码相同,则允许登录并提示登录成功。

if (UserInfoManager.CheckUserLogin(this.txtUserName.Text.Trim(), FormsAuthentication.HashPasswordForStoringInConfigFile(this.txtPwd.Text.Trim(),"md5")))

 {

         ClientScript.RegisterStartupScript(this.GetType(), "loginSucess", "<script>alert('登录成功');</script>");

         FormsAuthentication.RedirectFromLoginPage("userName", true);

 }

(3)注册新用户scme,密码在数据库中已经加密,如下图:

 

(4)使用scme账号进行登录,登录成功。

 

由于MD5加密是不可逆的,所以进行登录验证时,需要将用户输入的密码进行加密,然后再比对数据库保存的密码是否相同。

 

站点发布和部署

自定义错误

ASP.NET允许编写自定义错误页面。在站点访问出错时,显示指定的页面。

在开发过程中,如果程序出错,ASP.NET将显示调试页面,提示异常代码的具体位置和详细的错误信息。

如果在运行环境中用户直接看到这些错误信息,将暴露站点的程序漏洞,为站点带来安全隐患。

为避免这种情况的发生,通常在发布站点前,设置web.config文件的system.web节点,代码如下:

<customErrors defaultRedirect="Error.html" mode="RemoteOnly">

    <error statusCode="404" redirect="FileNotFound.html"/>

  </customErrors>

 

customErrors 节点中:

“defaultRedirect”表示站点发生错误时,重定向到的URL地址。

“Mode”表示设定启用(On)、禁用(Off)或供远程用户(

      RemoteOnly)访问的错误页面。

  Error子节点用于定义HTTP访问错误,它有以下两个属性:

statusCode:HTTP错误的状态码,如404为文件未找到、500为内部服务器错误。

Redirect:当发生statusCode中指定的错误时,重定向到的页面地址。

 

调试和运行时:

在开发中,需要进行调试,web.config默认设置为启动调试。该节点位于system.web下,编码为:

<compilation debug="true" targetFramework="4.0">

 

    Debug的值为true,表示启动调试;值为false,则表示禁用调试。在站点发布时,需要设置debug的值为false,以提高站点的运行速度。

HTTP运行时”也是常见的站点配置,代码如下:

<httpRuntime enable="true"

executionTimeout="90" maxRequestLength="204800"/>

解释:

“enable”表示启动该站点,如果设置为false,则站点关闭,无法访问页面。

“executionTimeout”表示页面程序执行的超时时间,以秒为单位。如果页面执行超时,将会终止执行,以避免消耗服务器资源。

“maxRequestLength”用于设置上传文件的最大大小,单位为KB,默认为4096KB(4MB),如果上传大于4MB的文件,需要将数值增大。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值