第五章.ASP.NET的其他Web控件
一.验证控件
常用的验证控件
验证控件名
|
说明
|
RequiredFieldValidator
|
用于强制用户对某些控件必须输入数据
|
CompareValidator
|
检查被验证的控件的值是否在某个特定范围内
|
RangeValidator
|
将被验证的控件的与已有信息进行比较
|
RegularExpressionValidator
|
检查被验证的控件的值是否与一个正则表达式相匹配
|
CustomValidator
|
使用一个自定义函数对用户输入的信息进行验证
|
ValidationSummary
|
显示所有当前验证错误的信息
|
常用验证控件的基本属性
属性名
|
说明
|
ControlToValidate
|
用于指定要验证的控件名
|
Enabled
|
用于指定是否进行验证,默认为True
|
IsValid
|
指示验证是事通过,通过为True,否则为False,只能在编程时使用
|
ErrorMessage
|
当验证失败时,由ValidationSummary控件来显示的错误信息
|
Text
|
当验证失败时,由该验证控件显示的错误信息。此信息显示在验证控件的位置上,若没有定义Text属性,则ErrorMessage的值可以代替Text的值
|
Display
|
用于指定验证控件的内容显示方式。可取值如下:
Dynamic:无错误时,验证控件的内容不占据页面空间
Static:验证控件的内容总要占据页面空间
None:验证控件的内容不在控件的位置上显示。错误信息在ValidationSummary中显示
|
1.RequiredFieldValidator
控件
特殊属性:
InitialValue:初始值(用于检测是否改变了输入值)
若InitialValue为空,即为非空验证,否则即为改变初始值的验证。
2.CompareValidator
控件
特殊属性:
1).ControlToValidate:要验证的控件ID
2).ControlToCompare:要用来比较的控件ID
3).ValueToCompare:要比较的值,优先级低于ControltoCompare
4).Operator:比较操作符
5).Type:比较数据类型
比较操作符
操作符
|
说明
|
DataTypeCheck
|
类型比较,判断是否与Type属性指定的类型匹配
|
Equal
|
等于
|
GreaterThan
|
大于
|
GreaterThanEqual
|
大于或等于
|
LessThan
|
小于
|
LessThanEqual
|
小于或等于
|
NotEqual
|
不等于
|
比较数据类型
数据类型
|
说明
|
Currency
|
货币
|
Date
|
日期时间
|
Integer
|
整型
|
Double
|
双精度浮点
|
String
|
字符
|
3.RangeValidator
控件
特殊属性:
1).MaximumControl:验证范围最大值的控件ID
2).MinimumControl:验证范围最小值的控件ID
3).MaximumValue:验证范围最大值
4).MinimumValue:验证范围最小值
5).Type:数据类型(以确定这些值如何进行比较)
比较数据类型
数据类型
|
说明
|
Currency
|
货币
|
Date
|
日期时间
|
Integer
|
整型
|
Double
|
双精度浮点
|
String
|
字符
|
4.RegularExpressionValidator
控件
特殊属性:
ValidationExpression:正则表达式字符串。
(1)."[]":用于定义可接受的字符,如 [ABC]表示在输入控件中只能接受"A"、"B"、"C"这3个字符
(2)."^":用于定义不可接受的字符,如 [^ABC]表示除了ABC这3个字符外,其它的都可以接受
(3)."{}":用于定义必须输入的字符个数,如 {5}表示必须输入5个字符;{2,5}表示必须输入2到5个字符;{4,}表示至少输入4个字符
(4).".":用于代表任意字符,如 .{3,6}表示接受3到6个任意字符
(5)."|":用于表示“或”的逻辑符号,如 [0-9]{3,6}|[A-Za-z]{3}表示3到6个数字或3个字母可以被接受
(6)."()":用于分块,与数学运算中的小括号作用类似
(7)."/":若希望可以接受的字符包含上述特殊字符,必须在这些字符前加上"/",如 /([0-9]{3}/)表示“(xxx)”
5.CustomValidator
控件
特殊属性:
1).OnServerValidate:服务器端验证事件的所调用的自定义验证函数名
传递二个参数:
(1).Sender:产生这个事件的对象
(2).ServerValidateEventArgs:是EventArgs类型的对象,该对象包含这个事件的更多信息
其中主要有2属性:
a).Value:要验证的用户输入的值
b).IsValid:用于设置验证的返回结果
2).ClientValidationFunction:为验证所调用的客户机端自定义脚本函数名
包含二个参数:
(1).Source:要验证的控件名,由ControltoValidate属性指定
(2).Value:要验证的用户输入的值
注:ClientValidationFunction函数必须返回一个True或False,双指出验证成功或失败
6.ValidationSummary
控件
特殊属性:
1).HeaderText:显示在验证摘要顶部的文本标题
2).showSummary:指定验证摘要是否直接插入页面显示,默认为True
3).ShowMessageBox:指定是否弹出消息框来显示,默认为False
4).DisplayMode:验证摘要的显示模式,如表:
显示模式
属性值
|
意义
|
List
|
列表显示
|
BullList
|
分项显示
|
SingleParagraph
|
以单个段落形式显示
|
二.文件上传
1.
语法:
<input type=”file” id=”myfile” runat=”server”>
注:
1).服务器接收并存储文件的目录属性设置为可写
2).表单的Enctype(编码类型)要设置为”multipart/form-data”
3).表单的提交方式为POST
4).客户端用<INPUT type=”file”>来选择要上传的文件
2.
相关类及属性
1).HtmlInputFile
类的常用属性
Accept:上传文件的MIME类型,可用逗号分隔多个类型
MaxLength:上传文件的最大路径长度
Size:浏览器中显示文件路径的文本宽度
PostedFile:上传的文件对象
2).PostedFile
对象的常用属性
ContentLength:接收文件的长度(字节)
ContentType:接收文件的MIME类型
Filename:上传的文件名(含路径)
3).PostedFile
对象的常用方法
SaveAs(filename):将上传的文件以filename文件名(含物理路径)保存。如果物理路径为空,则保存到Windows/System目录
3.
上传单个文件
<Script language="vb" runat="server">
Sub UploadFile(sender as object,e as eventargs)
'
如果文件上传的长度为0,则说明文件上传失败
If FileUp.postedFile.ContentLength=0 then
FileInfo.visible=False
Exit Sub
Else
fileInfo.visible=True
End If
'
显示上传文件的信息
Fsize.text=cstr(Fileup.PostedFile.ContentLength)
FType.text=Fileup.PostedFile.ContentType
FName.text=Fileup.PostedFile.FileName
'
存储上传文件
Dim filesplit() as string=split(Fileup.postedFile.filename,"/")
Dim Filename as string=Filesplit(filesplit.length-1)
fileup.postedfile.Saveas(server.Mappath("upload/")&filename)
End Sub
</script>
<html>
<body>
<h3>上传单个文件</h3>
<form enctype="multipart/form-data" runat="server" method="post">
请选择文件:
<input type="file" id="fileup" runat="server"><p>
<asp:button id="upload" οnclick="uploadfile" text="upload" runat="server"/>
</form>
<hr>
<div id="fileinfo" runat="server">
文件名称:<asp:label id="fname" runat="server"/><br>
文件大小:<asp:label id="fsize" runat="server"/><br>
文件类型:<asp:label id="ftype" runat="server"/><br>
</div>
</body>
</html>
4.
上传多个文件
<Script language="vb" runat="server">
Sub UploadFile(sender as object,e as eventargs)
Dim i As Integer
Dim finfo As string
For i=0 to request.Files.Count-1
Dim PostedFile As HttpPostedFile=Request.Files(i)
If PostedFile.ContentLength>0 Then
'接收上传文件信息
finfo=finfo & "文件名称:" & PostedFile.FileName & "<br>"
finfo=finfo & "文件大小:" & PostedFile.ContentLength & "<br>"
finfo=finfo & "文件类型:" & PostedFile.contentType & "<br>"
'存储上传文件
dim Filename as string=PostedFile.filename
Filename=mid(filename,Filename.LastIndexOf("/")+2)
postedFile.Saveas(server.MapPath("upload/")&filename)
End If
Next
fileinfo.innerhtml=finfo
End Sub
</script>
<html>
<body>
<h3>上传多个文件</h3>
<form enctype="multipart/form-data" runat="server" method="post">
请选择文件:<br>
<input type="file" id="fileup1" runat="server"><br>
<input type="file" id="fileup2" runat="server"><br>
<input type="file" id="fileup3" runat="server"><br>
<asp:button id="upload" οnclick="uploadfile" text="upload" runat="server"/>
</form>
<hr>
<div id="fileinfo" runat="server">
文件名称:<asp:label id="fname" runat="server"/><br>
文件大小:<asp:label id="fsize" runat="server"/><br>
文件类型:<asp:label id="ftype" runat="server"/><br>
</div>
</body>
</html>
5.
上传多个文件的三种方式
for(int i=0;i<Request.Files.Count;i++)
{
HttpPostedFile HttpPostedFile1=Request.Files[i];
if(HttpPostedFile1.ContentLength>0)
{
Label1.Text+="<br>文件名:"+HttpPostedFile1.FileName;
Label1.Text+="<br>文件大小:"+HttpPostedFile1.ContentLength;
Label1.Text+="<br>文件类型:"+HttpPostedFile1.ContentType;
Label1.Text+="<br>";
//
存储上传文件
//dim Filename as string=PostedFile.filename
//Filename=mid(filename,Filename.LastIndexOf("/")+2)
//postedFile.Saveas(server.MapPath("upload/")&filename)
}
}
/*
HttpFileCollection HttpFileCollection1 = Request.Files;
for (int i = 0; i < HttpFileCollection1.Count; i++)
{
HttpPostedFile HttpPostedFile1=Request.Files[i];
Label1.Text+="<br>"+HttpPostedFile1.FileName;
// Save the file.
//HttpFileCollection1[i].SaveAs(TempFileName);
}
HttpFileCollection HttpFileCollection1= Request.Files;
string[] arr1 = HttpFileCollection1.AllKeys;
for (int i = 0; i < arr1.Length; i++)
{
HttpPostedFile HttpPostedFile1=Request.Files[arr1[i]];
Label1.Text+="<br>"+HttpPostedFile1.FileName;
}
*/