ASP.NET4.0权威指南学习笔记

ASP.NET HelloWorld程序代码
Login.aspx:


Login.aspx.cs
protected void bt_Login_Click(object sender, EventArgs e)
{
if (this.txt_UserName.Text == String.Empty)
{
this.Session["UserName"] = "World!";
}
else
{
this.Session["UserName"] = this.txt_UserName.Text.ToString();
}
Response.Redirect("Default.aspx");
}
Default.aspx

Defalut.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
this.lb_content.Text = "Hello," + Session["UserName"].ToString();
}
防止sql注入程序
SQLInjectionHelper.cs
public class SQLInjectionHelper
{
//获取POST数据
public static bool ValidUrlData(string request)
{
bool result = false;
//获取POST数据
if (request == "POST")
{
for (int i = 0; i < HttpContext.Current.Request.Form.Count; i++)
{
result = ValidData(HttpContext.Current.Request.Form[i].ToString());
if (result)
{
break;
}
}
}
else //get请求
{
for (int i = 0; i < HttpContext.Current.Request.QueryString.Count; i++)
{
result = ValidData(HttpContext.Current.Request.QueryString[i].ToString());
if (result)
{
break;
}
}
}
return result;
}
private static bool ValidData(string inputData)
{
//验证InputData是否包含恶意集合
if (Regex.IsMatch(inputData, GetRegexString()))
{
return true;
}
else
{
return false;
}
}
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;
}
}
Global.asax
protected void Application_BeginRequest(object sender, EventArgs e)
{
bool result = false;
result = SQLInjectionHelper.ValidUrlData(Request.RequestType.ToUpper());
if (result)
{
Response.Write("您提交的数据有恶意字符!");
Response.End();
}
}
Test.aspx



Test.aspx.cs
protected void bt_Post_Click(object sender,EventArgs e)
{
}
protected void bt_Get_Click(object sender, EventArgs e)
{
Response.Redirect("Test.aspx?a=1&b=2&c=3");
}
控件介绍
HtmlInputButton.aspx

















+



=











HtmlInputButton.aspx.cs
protected void AddButton_Button_Click(object sender, EventArgs e)
{
sum.InnerHtml = ((Convert.ToInt32(txt_a.Value)) + (Convert.ToInt32(txt_b.Value))).ToString();
}
protected void AddButton_Submit_Click(object sender, EventArgs e)
{
sum.InnerHtml=(Convert.ToInt32(txt_a.Value)+Convert.ToInt32(txt_b.Value)).ToString();
}
文件上传
InputFile.aspx









文件名称:


文件类型:


文件大小:



InputFile.aspx.cs
protected void uploadClick(object sender, EventArgs e)
{
fileName.InnerHtml = myFile.PostedFile.FileName;
fileType.InnerHtml = myFile.PostedFile.ContentType;
fileSize.InnerHtml = myFile.PostedFile.ContentLength.ToString();
fileDatails.Visible = true;
myFile.PostedFile.SaveAs("D:\myProject\vsProject\Solution3\uploadFile.txt");
}
多选框控件
HtmlCheckBox.aspx





onclick="Button1_Click1" />


HtmlCheckBox.aspx.cs
protected void Button1_Click1(object sender, EventArgs e)
{
string str = string.Empty;
if (CheckBox1.Checked == true)
{
str += "1";
}
if (CheckBox2.Checked == true)
{
str += "2";
}
Label1.Text = str;
}
单选框控件
Danxuan.aspx

选项1


选项2


选项3





Dnaxuan.aspx.cs
protected void submitClick(object sender, EventArgs e)
{
if (radio1.Checked == true)
{
spanRadio.InnerHtml = "选中1";
}
else if (radio2.Checked == true)
{
spanRadio.InnerHtml = "选中2";
}
else if (radio3.Checked == true)
{
spanRadio.InnerHtml = "选中3";
}
}
图像控件
onmouseover=”this.src=”img/2.jpg;” onmouseout=”this.src=”img/1.jpg”>
Hidden控件
Htmlhidden.aspx
输入值:







Htmlhidden.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
span1.InnerHtml = "隐藏值:
"+text_hiddenDoc.Value+"
";
}
protected void bt_save_click(object sender,EventArgs e)
{
text_hiddenDoc.Value = txt_Doc.Value;
}
Select控件

选择一个颜色:








颜色变化演示区域



HtmlSelect.aspx.cs
protected void bt_submit_click(object sender, EventArgs e)
{
span1.Style["background-color"]=sl_Color.Value;
}
protected void bt_addToSelect_click(object sender, EventArgs e)
{
sl_Color.Items.Add(txt_color.Value);
}
使用数据流的形式输出图片
showImage.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
//获取文件地址参数
string file=Request.QueryString["file"].ToString();
FileStream steam = new FileStream(file, FileMode.Open);
//获取流的长度
long FileSize = steam.Length;
//定义一个二进制数组
byte[] Buffer=new byte[(int)FileSize];
steam.Read(Buffer,0,(int)FileSize);
steam.Close();
Response.BinaryWrite(Buffer);
steam = null;
}
新建showImg.aspx

在后台调用即showImg.aspx.cs下的page_load页面
img1.src=”showImage.aspx?file=”+Server.UrlEncode(“D:\myProject\vsProject\Solution3\timg.jpg”)
设置style特性以及其他属性
StyleSetting.aspx


StyleSetting.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
mysite.Style["color"] = "#008800";
mysite.Style["font-size"] = "12pt";
mysite.Style["text-decotation"] = "none";
mysite.Style["font-style"] = "italic";
mysite.HRef = "http://www.baidu.com";
mysite.InnerText = "百度一下";
}
用程序动态创建控件
dongtaiBuildTag.aspx.cs page_load函数
HtmlAnchor mysite=new HtmlAnchor();
mysite.Style["color"] = "#008800";
mysite.Style["font-size"] = "12pt";
mysite.Style["text-decotation"] = "none";
mysite.Style["font-style"] = "italic";
mysite.HRef = "http://www.baidu.com";
mysite.InnerText = "百度一下";
this.Controls.Add(mysite);
运行结果与StyleSetting.aspx结果一样。
第三章 web标准服务器控件概述
3-1.aspx

3-1.aspx.cs
protected void saveClick(object sender, EventArgs e)
{
Response.Write("我是保存按钮");
}


相同结果改写
(1)构造函数
textbox1.Height=new Unit(100);
textbox1.Width=new Unit("80%");
(2)静态方法
textbox1.Height=Unit.Pixel(100);
textbox1.Width=Unit.Percentage(80);
(3)对象
textbox1.Height=new Unit(100,UnitType.Pixel);
textbox1.Width=new Unit(80,UnitType.Percentage);
通过上述方法可以将同一单位赋值给多个控件
Unit myUnit=new Unit(100,UnitType.Pixel);
textbox1.Height=myUnit;
textbox2.Width=myUnit;
textbox3.Height=myUnit;
枚举

textbox1.TextMode=TextBoxMode.SingleLine;
颜色

(1)
int alpha=255;
int red=255;
int green=255;
int blue=0;
Button1.BackColor=Color.FromArgb(red,green,blue);
Button1.BackColor=Color.FromArgb(alpha,red,green,blue);
(2)
Button1.BackColor=Color.FromName(Red);
(3)
Button1.BackColor=Color.Red;
(4)
Button1.BackColor=ColorTranslator.FromHtml("red");//也可以是十六进制
字体

Button1.Font.Name="微软雅黑";
Button1.Font.Bold=true;//启用粗体
字体集合
string[] fontName={"微软雅黑","宋体","黑体"};
Button1.Font.Names=fontName;
字体大小设置
(1)
Button1.Font.Size=FontUnit.XSmall;
(2)

Button2.Font.Size=FontUnit.Point(16);
(2)

默认按钮
form属性的defaultbutton="Button1",按钮控件的ID
例子:




//默认按钮为第一个ID为button的

数据显示控件

label控件

代码控制
lb_doc.Text="我爱ASP.NET";
显示复杂的HTML内容
(1)
public string HTMLDecode(string s)
该方法用于对HTML编码的字符串进行解码,并且返回已经解码的字符串,然后将返回已经解码的字符串赋值给label控件进行显示。
lb_doc.Text=Server.HtmlDecode(str);
(2)
public string HtmlEncode(string s)
该方法是对字符串进行HTML编码并且返回已经编码的字符串
Literal控件


代码控制
lb_doc.Text="我爱ASP";
特点:不允许你向其内容应用样式,无法定位,不适合创建标题


查看网页源代码:
我是label控件
我是Literal控件
数据输入控件

TextBox控件

TextBox1.Text="我爱ASP"
TextMode属性设置为Password可以确保其他人员观察用户输入密码时无法确知该密码
CheckBox控件

if(CheckBox1.Checked)
{
//被选中时的代码
}
代码控制
CheckBox1.Checked=true;
CheckBoxList控件
CheckBoxList控件可以再web页面上创建多个复选框,即你可以在CheckBoxList控件的开始标记和结束标记之间防止一个listItem元素来创建你所要显示的项。
在显示的设置上,可以使用RepeatLayout和RepeatDirection属性指定列表的显示方式
RepeatLayout设置为table(默认)则该列呈现一个表格,如果设置为flow,则该列表呈现时没有任何表结构
如果设置为OrderedList,则将该列表的每一个选项前加上一个数字编号,如果设置为UnorderedList,则将在该列表的每个选项上加一个小黑点
RepeatDirection默认为Vertical,垂直方向上呈现该列表。
设置为Horizontal,则可以再水平方向上呈现该列表

选项1
选项2
选项3
选项4

for (int i=0;i {
if(CheckBoxList1.Items[i].Selected)
{
//处理选中的项
}
}
Radiobutton控件




if(RadioButton1.Checked)
{
//处理代码
}
RadioButton1.Checked=true;
HTML源码




RadiobuttonList控件

单选
单选
单选
单选

string value=string .Empty;
if(RadioButtonList1.SelectedIndex>-1)
{
value=RadioButtonList1.SelectedItem.Text;
}
数据提交控件

Button控件


protected void bt_Save_Click(object sender,EventArgs e)
{
//事件处理程序
}
设置CommandName属性来创建Command按钮,command按钮命令与按钮关联

protected void CommandBtn_Click(object sender,CommandEventArgs e)
{
Response.Write("CommandName:"+e.CommandName+"CommandArgument:"+e.CommandArgument);
}
ImageButton控件

LinkButton控件
保存
图像显示控件

ImageMap控件
日常编程中主要使用它的HotSpotMode、HotSpotS属性和Onclick事件
(1)
HotSpotMode属性。热点模式
1.NotSet 未设置项,虽然名为未设置,但其实默认情况下会执行定向操作,定向到你所指定的url地址去。
如果未指定url地址,那默认将指向到自己的web应用程序根目录
2.Navigate 定向操作。定向到指定的url地址去,如果未指定url地址,那默认将指向到自己的web应用程序根目录
3.PostBack 回发操作项。然后点击热点区域,将执行后面的Onclick事件
4.Inactive 无任何操作,相当于没有热点区域的普通图片
(2)HotSpotS属性
它有CircleHotSpot,RectangleHotSpot,和PolygonHotSpot这三个子类。
如果要自己定义类型,该类型必须继承HotSpot类。
(3)Onclick事件
对热点区域的点击事件经常在HotSpotMode为PostBack时用到
TestImageMap1.aspx


<%--HotSpotMode="Navigate" Top="0" Left="0" Bottom="35" Right="90"--%>



TestImageMap2.aspx








TestImageMap2.aspx.cs
protected void ImageMap1Click(object sender, ImageMapEventArgs e)
{
Label1.Text = e.PostBackValue + "  clicked";
}
文件上传控件
TestFileUpload.aspx







TestFileUpload.aspx.cs
protected void UploadButton_click(object sender, EventArgs e)
{
string savePath = @"D:\myProject\vsProject\Solution3";
if(!Directory.Exists(savePath))
{
Directory.CreateDirectory(savePath);
}
if (FileUpload1.HasFile)
{
//获取上传文件名称
string filename = FileUpload1.FileName;
//获取要上传的文件保存完整路径
savePath += filename;
//执行文件上传操作
FileUpload1.SaveAs(savePath);
Label1.Text = "你上传的文件保存在" + savePath;
}
else
{
Label1.Text = "你没有指定要上传的文件";
}
}
文件上传类型限制
(1)
protected void UploadButton_click(object sender, EventArgs e)
{
string savePath = @"D:\myProject\vsProject\Solution3";
string fileType = string.Empty;
if(!Directory.Exists(savePath))
{
Directory.CreateDirectory(savePath);
}
if (FileUpload1.HasFile)
{
//获取上传文件名称
string filename = FileUpload1.FileName;
//获取文件的类型转换为小写
fileType = Path.GetExtension(filename).ToLower();
if (fileType == ".jpg" || fileType == ".gif" || fileType == ".txt")
{
//获取要上传的文件保存完整路径
savePath += filename;
//执行文件上传操作
FileUpload1.SaveAs(savePath);
Label1.Text = "你上传的文件保存在" + savePath;
}
else
{
Label1.Text = "只允许上传.jpg,.gif和.txt文件";
}
}
else
{
Label1.Text = "你没有指定要上传的文件";
}

}
(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配置文件节点里面设置他的值



maxRequestLength以kb为单位,可以上传的秒数
Calendar控件

protected void change_click(object sender, EventArgs e)
{
Response.Write("你选择的日期是:" + Calendar1.SlectDate.ToLongDateString());
}
HyperLink控件
HyperLink连接
Panel控件
panelText.aspx

姓名:


电话:



地址:





工作经验:


panelText.aspx.cs
protected void showDetails(object sender, EventArgs e)
{
Panel2.Visible = true;
Button1.Visible = false;
}
定义具有默认按钮的窗体
panelTest2.aspx

姓名:


电话:



地址:






当用户按下Enter键时,默认触发id为save的button的onclick事件
HiddenFiled隐藏域
HiddenFieldTest.aspx










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,添加入信息



~/img/1.gif
http://www.baidu.com
去百度搜索
10
baidu


~/img/2.gif
http://www.baidu.com
去谷歌搜索
20
Google


Ad.aspx

打开即可查看
表单验证控件
TestRequireFieldVaild.aspx





范围验证控件
TestRangeValidator.aspx

请在文本框中输入数字1-20














比较验证控件CompareValidator
TestCompareValidator.aspx





TestCompareValidator2.aspx

TextBox1:


TextBox2







正则验证控件RegularExpressionValidator
TestRegularExpressionValidator.aspx
Email:






自定义逻辑验证控件CumstomValidator
TestCumstomValidator.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestCumstomValidator.aspx.cs" Inherits="_4.TestCumstomValidator" %>



自定义逻辑验证控件














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

文本:



数字:



Email:




验证控件编程实战
TestRangeValidator1.aspx



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;
///
/// StringValidator 的摘要说明
///

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" %>




















验证组
TestValidationGroup.aspx

用户名:


ID="RequiredFieldValidator1"
runat="server"
ErrorMessage="请输入用户名"
ControlToValidate="UserName"
ValidationGroup="UserNameGroup"
>






地址:


ID="RequiredFieldValidator2"
runat="server"
ErrorMessage="请输入地址"
ControlToValidate="TextBox1"
ValidationGroup="AddressGroup"
>





第五章asp.net用户控件
161页
TestUserControl.ascx












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" %>




测试TestUserControl控件









运行Test.aspx,即可显示日历
用户控件编程
HyperLinkControl.ascx



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"%>

给用户控件添加属性
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



HyperLinkControl.aspx
<%@ Register TagPrefix="ucl" Src="~/HyperLinkControl.ascx" TagName="HyperLinkControl"%>

184页码

你可能感兴趣的:(ASP.NET4.0权威指南学习笔记)