欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

ASP.NET 4.0深度实战与学习心得记录

最编程 2024-02-21 08:21:10
...
}
(2)
protected void UploadButton_click(object sender, EventArgs e)
{
string savePath = @"D:\myProject\vsProject\Solution3";
string fileType = string.Empty;
bool fileTypeOk = false;
if(!Directory.Exists(savePath))
{
Directory.CreateDirectory(savePath);
}
if (FileUpload1.HasFile)
{
//获取上传文件名称
string filename = FileUpload1.FileName;
//获取文件的类型转换为小写
fileType = Path.GetExtension(filename).ToLower();
string[] allowedFileType = {".jpg",".gif",".txt" };
for (int i = 0; i < allowedFileType.Length;i++ )
{
if (fileType == allowedFileType[i])
{
fileTypeOk = true;
}
}
if (fileTypeOk)
{
//获取要上传的文件保存完整路径
savePath += filename;
//执行文件上传操作
FileUpload1.SaveAs(savePath);
Label1.Text = "你上传的文件保存在" + savePath;
}
else
{
Label1.Text = "只允许上传.jpg,.gif和.txt文件";
}
}
else
{
Label1.Text = "你没有指定要上传的文件";
}
}
文件大小上传限制:
可上传的最大文件大小取决于MaxRequestLength配置的值。
超过这个值就会上传失败,可以再web.config配置文件<system.web>节点里面设置他的值
<system.web>
<httpRuntime maxRequestLength="40960" executionTimeout="6000" />
</system.web>
maxRequestLength以kb为单位,可以上传的秒数
Calendar控件
<asp:Calendar ID="Calendar1" runat="server" BackColor="Green" OnSelectionChanged="change_click"></asp:Calendar>
protected void change_click(object sender, EventArgs e)
{
Response.Write("你选择的日期是:" + Calendar1.SlectDate.ToLongDateString());
}
HyperLink控件
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="http://www.baidu.com" Target="_blank">HyperLink连接</asp:HyperLink>
Panel控件
panelText.aspx
<asp:Panel ID="Panel1" runat="server" Width="260px" HorizontalAlign="Left" Wrap="true" GroupingText="员工基础信息">
姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
电话:
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
地址:
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<br />
</asp:Panel>
<asp:panel ID="Panel2" runat="server" Width="260px" HorizontalAlign="Center" Wrap="true" Visible="false" GroupingText="员工附加信息">
工作经验:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
</asp:panel>
<asp:Button ID="Button1" runat="server" Text="显示员工附加信息" OnClick="showDetails"/>
panelText.aspx.cs
protected void showDetails(object sender, EventArgs e)
{
Panel2.Visible = true;
Button1.Visible = false;
}
定义具有默认按钮的窗体
panelTest2.aspx
<asp:Panel ID="Panel1" runat="server" Width="260px" HorizontalAlign="Left" Wrap="true" GroupingText="员工基础信息" DefaultButton="Save">
姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
电话:
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
地址:
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<br />
</asp:Panel>
<asp:Button ID="Save" runat="server" Text="Button" />
</div>
当用户按下Enter键时,默认触发id为save的button的onclick事件
HiddenFiled隐藏域
HiddenFieldTest.aspx
<script type="text/javascript">
function PageLoad() {
form1.HiddenField1.value = form1.TextBox1.value;
};
</script>
<asp:Label ID="Lable1" runat="server">
</asp:Label>
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<input type="submit" name="submitButton" value="更改隐藏域的值" onclick="PageLoad()" />
<asp:HiddenField ID="HiddenField1" runat="server" OnValueChanged="HiddenField_valueChanged"/>
HiddenFieldTest.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
HiddenField1.Value = "隐藏域的初始值";
Lable1.Text = "隐藏域的初始值为:"+HiddenField1.Value;
}
}
protected void HiddenField_valueChanged(object sender, EventArgs e)
{
Lable1.Text = "隐藏域的值被客户端修改为:"+HiddenField1.Value;
}
AdTotator控件
是一种在web页面上显示广告的方法。
先定义一个xml文件,存储广告信息
在app_data文件夹下新建Ad.xml,添加入信息
<?xml version="1.0" encoding="utf-8" ?>
<Advertisements xmlns="http://schemas.microsoft.com/AspNet/AdRotator-Schedule-File">
<Ad>
<ImageUrl>~/img/1.gif</ImageUrl>
<NavigateUrl>http://www.baidu.com</NavigateUrl>
<AlternateText>去百度搜索</AlternateText>
<Impressions>10</Impressions>
<Keyword>baidu</Keyword>
</Ad>
<Ad>
<ImageUrl>~/img/2.gif</ImageUrl>
<NavigateUrl>http://www.baidu.com</NavigateUrl>
<AlternateText>去谷歌搜索</AlternateText>
<Impressions>20</Impressions>
<Keyword>Google</Keyword>
</Ad>
</Advertisements>
Ad.aspx
<asp:AdRotator ID="AdRotator1" runat="server" AdvertisementFile="~/App_Data/Ad.xml" Target="_blank" />
打开即可查看
表单验证控件
TestRequireFieldVaild.aspx
<asp:TextBox ID="Text1" runat="server" Text="请输入文本"></asp:TextBox>
<asp:RequiredFieldValidator ControlToValidate="Text1" Text="文本输入不能为空" runat="server" Display="Static" InitialValue="请输入文本"></asp:RequiredFieldValidator>
<br />
<asp:Button ID="button1" runat="server" Text="提交数据"/>
范围验证控件
TestRangeValidator.aspx
<div>
请在文本框中输入数字1-20
<br />
<asp:TextBox ID="TextBox1" runat="server">
</asp:TextBox>
<br />
<asp:RequiredFieldValidator ID="RequireFieldValidator1" ControlToValidate="TextBox1" Text="文本输入不能为空" runat="server"></asp:RequiredFieldValidator>
<br />
<asp:RangeValidator ID="RangeValidator1" ControlToValidate="TextBox1" MinimumValue="1" MaximumValue="20" Type="Integer" Text="输入数字必须是1-20" runat="server"></asp:RangeValidator>
<br />
<asp:Button ID="Button1" Text="数据提交" runat="server" />
</div>
比较验证控件CompareValidator
TestCompareValidator.aspx
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="CompareValidator" ControlToValidate="TextBox1" ValueToCompare="20" Type="Integer" Text="你输入的数字必须小于或者等于20" Operator="LessThanEqual"></asp:CompareValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="数据提交" />
TestCompareValidator2.aspx
<div>
TextBox1:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
TextBox2<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="CompareValidator" ControlToValidate="TextBox1" ControlToCompare="TextBox2" Type="Integer" Operator="LessThanEqual" Text="TextBox1的值必须小于2的值"></asp:CompareValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="数据提交" />
</div>
正则验证控件RegularExpressionValidator
TestRegularExpressionValidator.aspx
Email:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="RegularExpressionValidator" ControlToValidate="TextBox1" ValidationExpression=".@.{2,}..{2,}" Text="你的Email格式错误"></asp:RegularExpressionValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="提交数据" />
自定义逻辑验证控件CumstomValidator
TestCumstomValidator.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestCumstomValidator.aspx.cs" Inherits="_4.TestCumstomValidator" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>自定义逻辑验证控件</title>
<script type="text/javascript">
function ValidationFunctionName(source, arguments) {
//客户端验证代码
}
function ClientValidate(source, arguments) {
if ((arguments.Value % 2) == 0) {
arguments.IsValid = true;
}
else {
arguments.IsValod = false;
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server" Text="请输入一个数字"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="TextBox1" ClientValidationFunction="ClientValidate" OnServerValidate="ServerValidation" Text="你输入的数字不是2的倍数" ForeColor="green"></asp:CustomValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="提交数据" />
</div>
</form>
</body>
</html>
TestCumstomValidator.aspx.cs
protected void ServerValidation(object source, ServerValidateEventArgs arguments)
{
try
{
int i = int.Parse(arguments.Value);
arguments.IsValid = ((i % 2) == 0);
}
catch
{
arguments.IsValid = false;
}
}
验证信息显示ValidationSummary
ValidationSummary.aspx
<div>
文本:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="文本输入不能为空" ControlToValidate="TextBox1" Text="
"></asp:RequiredFieldValidator>
<br />
数字:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="输入的数字必须为1-20" ControlToValidate="TextBox2" Type="Integer" MinimumValue="1" MaximumValue="20" Text=""></asp:RangeValidator>
<br />
Email:<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="你的Email地址格式错误" ControlToValidate="TextBox3" ValidationExpression=".
@.{2,}..{2,}" Text=""></asp:RegularExpressionValidator>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="true" DisplayMode="BulletList"/>
<asp:Button ID="Button1" runat="server" Text="数据提交" />
</div>
验证控件编程实战
TestRangeValidator1.aspx
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="RangeValidator" ControlToValidate="TextBox1" EnableClientScript="false"></asp:RangeValidator>
<asp:Button ID="Button1" runat="server" Text="提交数据" OnClick="button1_click" />
TestRangeValidator1.aspx.cs
protected void button1_click(object sender,EventArgs e)
{
RangeValidator1.MaximumValue = "20";
RangeValidator1.MinimumValue = "1";
RangeValidator1.Type = ValidationDataType.Integer;
RangeValidator1.Validate();
if (!RangeValidator1.IsValid)
{
RangeValidator1.ErrorMessage = "你输入的数字必须在1-20内";
}
}
开发自己的验证控件
StringValidator.cs
using System.Text.RegularExpressions;
using System.Web.UI.WebControls;
/// <summary>
/// StringValidator 的摘要说明
/// </summary>
public class StringValidator : BaseValidator
{
public StringValidator()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private static bool ValidData(string inputData)
{
if (Regex.IsMatch(inputData, GetRegexString()))
{
return false;
}
else {
return true;
}
}
private static string GetRegexString()
{
//构造sql注入的关键字符串
string[] strBadChar = { "and", "exec", "insert", "select", "delete", "update", "count", "from", "drop", "asc", "char", "or", "%", ";", ":", "'", """, "-", "chr", "mid", "master", "truncate", "char", "declare", "SiteName", "net user", "xp_cmdshell", "/add", "exec master.dbo.xp_cmdshell", "net localgroup administrators" };
//构造正则表达式
string str_Regex = ".
(";
for (int i = 0; i < strBadChar.Length - 1; i++)
{
str_Regex += strBadChar[i] + "|";
}
str_Regex += strBadChar[strBadChar.Length - 1] + ").*";
return str_Regex;
}
protected override bool EvaluateIsValid()
{
string value = this.GetControlValidationValue(this.ControlToValidate);
//throw new NotImplementedException();
return ValidData(value);
}
}
TestStringValidator.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestStringValidator.aspx.cs" Inherits="TestStringValidator" %>
<%@Register TagPrefix="custom" Namespace="WebSite" Assembly="4" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Height="80px"></asp:TextBox>
<br />
<custom:StringValidator id="StringValidator1" controltovalidate="TextBox1" text="你输入的文本里面有非法字符" runat="server"></custom:StringValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="数据提交" />
</div>
</form>
</body>
</html>
验证组
TestValidationGroup.aspx
<asp:Panel ID="Panel1" runat="server" EnableTheming="true" Width="300" GroupingText="组一">
用户名:<asp:TextBox ID="UserName" runat="server"></asp:TextBox>
<br />
<asp:RequiredFieldValidator
ID="RequiredFieldValidator1"
runat="server"
ErrorMessage="请输入用户名"
ControlToValidate="UserName"
ValidationGroup="UserNameGroup"
>
</asp:RequiredFieldValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="数据提交" CausesValidation="true" ValidationGroup="UserNameGroup" />
</asp:Panel>
<asp:Panel ID="Panel2" runat="server" EnableTheming="true" Width="300" GroupingText="组二">
地址:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:RequiredFieldValidator
ID="RequiredFieldValidator2"
runat="server"
ErrorMessage="请输入地址"
ControlToValidate="TextBox1"
ValidationGroup="AddressGroup"
>
</asp:RequiredFieldValidator>
<br />
<asp:Button ID="Button2" runat="server" Text="数据提交" CausesValidation="true" ValidationGroup="AddressGroup" />
</asp:Panel>
第五章asp.net用户控件
161页
TestUserControl.ascx
<table style="width:100%;">
<tr>
<td>
<asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="Calendar1_selectChanged"></asp:Calendar>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label1" runat="server"></asp:Label>
</td>
</tr>
</table>
TestUserControl.ascx.cs
protected void Calendar1_selectChanged(object sender, EventArgs e)
{
Label1.Text = "你选择的日期是:" + Calendar1.SelectedDate.ToLongDateString();
}
Test.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
<%@ Register Src="~/TestUserControl.ascx" TagName="TestUserControl" TagPrefix="ucl" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>测试TestUserControl控件</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<ucl:TestUserControl ID="TestUserControl1" runat="server"/>
</div>
</form>
</body>
</html>
运行Test.aspx,即可显示日历
用户控件编程
HyperLinkControl.ascx
<asp:Panel ID="Panel1" runat="server" EnableTheming="true" Width="400px" GroupingText="网站友情链接" Font-Size="10pt">
<asp:HyperLink ID="HyperLink1" runat="server" OnLoad="HyperLink_Load"></asp:HyperLink>
</asp:Panel>
HyperLinkControl.ascx.cs
protected void HyperLink_Load(object sender,EventArgs e)
{
HyperLink1.Text = "本书官网";
HyperLink1.NavigateUrl = "http://www.baidu.com";
}
HyperLinkControl.aspx
<%@ Register TagPrefix="ucl" Src="~/HyperLinkControl.ascx" TagName="HyperLinkControl"%>
<ucl:HyperLinkControl runat="server"/>
给用户控件添加属性
HyperLinkControl.ascx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
HyperLink1.Text = Text;
HyperLink1.NavigateUrl = Url;
}
}
private string text;
private string url;
public string Text
{
get
{
return text;
}
set
{
text = value;
}
}
public string Url
{
get
{
return url;
}
set
{
text = value;
}
}
HyperLinkControl.ascx
<asp:Panel ID="Panel1" runat="server" EnableTheming="true" Width="400px" GroupingText="网站友情链接" Font-Size="10pt">
<asp:HyperLink ID="HyperLink1" runat="server"></asp:HyperLink>
</asp:Panel>
HyperLinkControl.aspx
<%@ Register TagPrefix="ucl" Src="~/HyperLinkControl.ascx" TagName="HyperLinkControl"%>
<ucl:HyperLinkControl runat="server" Text="本书官网" Url="http://www.baidu.com"/>
184页码