Asp.Net

ViewState

EnableViewState

Cookie

Javascript:

$.cookie(‘名字’, ‘值’, { expires: 7, path:‘/’,domain: ‘itcast.cn’, secure: true }),expires表示要求浏览器保留Cookie几天,这个值

Response.SetCookie(newHttpCookie("UserName",TextBox1.Text));

Request.Cookies["Color"].value

Session   NetSession对象

Session[ID]

 

HttpUtility.HtmlEncode就可以将字符串中的<>等特殊字符转换为HTML显示的字符,也就是不把<script>当成定义脚本的标签,而是当成“&lt;script&gt;”这样可以在页面上直接显示出来的内容。

 

修改看帖代码,将context.Response.Write(line +"<hr/>");修改为context.Response.Write(HttpUtility.HtmlEncode(line)+"<hr/>");即可。

 

(使用runat=server的控件)会自动将“~”进行转换,如果在HTML控件或者需要在代码中转换的话可以使用VirtualPathUtility类中静态方法进行虚拟路径、全路径等的转换,比如VirtualPathUtility.ToAbsolute("~/a/b1.aspx")就是将虚拟路径转换为相对于应用根的全路径,

 

 

保存对话框,则需要添加Header:string encodeFileName=HttpUtility.UrlEncode("过滤词.txt"); Response.AddHeader("Content-Disposition",string.Format("attachment;filename=\"{0}\"",encodeFileName));其中filename后为编码后的文件名。filename段为建议的保存文件名

 

<%=UserName %>

相当于在当前位置调用Response.Write(UserName)

<%SayHello(); %>

<%if(UserName == "aaa") {UserName = "bbb"; } %>

 

Request对象

l 1、(*) Request.AppRelativeCurrentExecutionFilePath,获取当前执行请求相对于应用根目录的虚拟路径,以~开头,比如“~/Handler.ashx”,

l 2、(*) Request.PhysicalApplicationPath,获取当前应用的物理路径,比如D:\我的文档\VisualStudio 2008\WebSites\WebSite4\

l 3、(*) Request.PhysicalPath,获取当前请求的物理路径,比如D:\我的文档\Visual Studio2008\WebSites\WebSite4\Handler.ashx

l 4、(*) Request.RawUrl获得原始请求URL、Request.Url获得请求的URL,区别涉及到URL重写的问题

l 5、Request.UrlReferrer 网页的来源,可以根据这个判断从百度搜的哪个关键词、防下载盗链、防图片盗链,可以伪造(比如迅雷)。"本图片仅供如鹏网内部交流使用",在DZ中测试。全局防盗链用Globals.asax

l 6、Request.UserHostAddress获得访问者的IP地址

l 7、(*) Request.UserLanguages获得访问者浏览器支持的语言,可以通过这个实现对不同语言的人显示不同语言的页面。

l 8、Request.Cookies 获取浏览器发过来的浏览器端的Cookie,从它里面读取Cookie值,比如context.Request.Cookies["mysessionid"],使用Request.Cookies 的时候一般只是读取,将Cookie写回浏览器要用Response.Cookies

l 9、Request.MapPath(virtulPath)将虚拟路径转换为磁盘上的物理路径,Request.MapPath("~/a/b.aspx")就会得到D:\2008\WebSites\WebSite4\a\b.aspx

 

 

Response对象

l 响应的缓冲输出:为了提高服务器的性能,ASP.Net向浏览器Write的时候默认并不会每Write一次都会立即输出到浏览器,而是会缓存数据,到合适的时机或者响应结束才会将缓冲区中的数据一起发送到浏览器。

l Response对象的主要成员:

1、Response.Buffer、Response.BufferOutput:经过Reflector反编译,发现两个属性是一样的,Buffer内部就是调用的BufferOutput。这个属性用来控制是否采用

响应缓存,默认是true。

2、Response.Flush()将缓冲区中的数据发送给浏览器。这在需要将Write出来的内容立即输出到浏览器的场合非常适用。案例:大批量数据的导入,显示正在导入第*条数据,用Thread.Sleep模拟耗时。

3、Response.Clear()清空缓存区中的数据,这样在缓存区中的没有发送到浏览器端的数据被清空,不会被发送到浏览器。在用aspx输出非html的例子中经常看到用clear来输出httpmodule等给附加的内容(不推荐,推荐用ashx)

4、Response.ContentEncoding输出流的编码。

5、Response.ContentType 输出流的内容类型,比如是html(text/html)还是普通文本(text/plain)还是JPEG图片(image/JPEG)。

6、Response.Cookies 返回给浏览器的Cookie的集合,可以通过它设置Cookiel

7、Response.OutputStream 输出流,在输出图片、Excel文件等非文本内容的时候要使用它

l 8Response.End()终止响应,将之前缓存中的数据发给浏览器,End()之后的代码不会被

继续执行。在终止一些非法请求的时候,比如盗链等可以用End()立即终止请求。

l 9、Response.Redirect(url) 重定向浏览器到新的网址。即可以重定向到站外网址也可以重定向到站内网址。Response.Redirect("http://www.rupeng.com")、

Response.Redirect("a.htm")。Redirect是向浏览器发回302重定向,是通知浏览器“请重新访问url这个网址”,这个过程经历了服务器通知浏览器请重新访问url这个网址和浏览器接到命令访问新网址的过程。使用HttpWatch查看整个响应过程的Http报文。用Redirect因为是浏览器自己去重新访问新网址的,所以在地址栏中是可以看到网址的变化的。后面会用来防止刷

新浏览器时提示“重试”。

l 10、Response.SetCookie(HttpCookie cookie),向输出流中更新写到浏览器中的Cookie,如果Cookie存在就更新不存在就增加。是对Response.Cookies的简化调用。

l 11、Response.Write()向浏览器输出内容。

l 12、(*)Response.WriteFile(filename)向浏览器输出文件。比如Response.WriteFile("c:/boot.ini")

Server对象

l Server是context的一个属性,是HttpServerUtility类的一个对象

l Server.HtmlDecode()、Server.HtmlEncode()Server.UrlEncode()、Server.UrlDecode()是对HttpUtility类中相应方法的一个代理调用。个人推荐总是使用HttpUtility,因为有的地方很难拿到Server对象。别把HtmlEncode、UrlEncode混了,UrlEncode是处理超链接的,HtmlEncode是处理html代码的。

l Server.Transfer(path) 内部重定向请求,Server.Transfer("JieBanRen.aspx")将用户的请求重定向给JieBanRen.aspx处理,是服务器内部的接管,浏览器是意识不到这个接管的,不是象Response.Redirect那样经历“通知浏览器‘请重新访问url这个网址’和浏览器接到命令访问新网址的过程”,是一次http请求,因此浏览器地址栏不会变化(联想,呼叫中心坐席告诉客户一个号码和帮客户转接的区别)。因为是内部接管,所以在被重定向到的页面中是可以访问到Request、Cookies等这些来源页面接受的参数的,就像这些参数是传递给他的,而Redirect则不行,因为是让浏览器去访问的。注意Transfer是内部接管,因此不能像Redirect那样重定向到外部网站。(常考)

l 使用Server.Transfer不能直接重定向到ashx,否则会报错“执行子请求出错”。

l 有的时候不能拿到HttpContext对象,比如在Global.asax中(后面讲),可以通过HttpContext.Current拿到当前的HttpContext,进而拿到Response、Request、Server等。

l Server.MapPath。如果拿不到Server则使用HostingEnvironment.MapPath()方法

 

Page类成员

l 1、Request、Response、Server属性:对context.Request、context.Response、context.Server的简化调用。

l 2、AppRelativeVirtualPath属性:获得页面相对于应用根路径的路径,比如~/Default2.aspx

l 3、FindControl(ctrlId)根据控件的id找到控件。一般情况下直接在代码中写控件id引用控件就可以了,但是对于有些场合:使用ListView等控件的模板、编写自定义控件等则需要使用FindControl来引用控件,FindControl返回值是Control,一般需要显式转换为相应的控件:TextBox txtBox =(TextBox)FindControl("TextBox1");txtBox.Text ="aaa";

l 4、IsPostBack、Session

l 5、ResolveClientUrl(url)将虚拟路径转换为客户端访问时的路径,比如ResolveClientUrl("~/a/b.aspx")结果是a/b.aspx,这通常在ListView等控件的模板中输出HTML使用。基本就是对VirtualPathUtitlity.ToAbsolute简化调用。考虑当前页面的相对路径,生成的路径短。最常用。

l 6、ResolveUrl(url) 将虚拟路径转换为相对于网站根目录的路径,比如ResolveUrl("~/a/b.aspx")的结果是/WebSite4/a/b.aspx 。不考虑当前页面,VirtualPathUtitlity.ToAbsolute直接转换为一个全路径。

 

所有的ASP.Net大部分都是从Control、WebControl类继承的,几乎都有的成员有:

 (1)ClientID,控件在客户端的Id,控件在服务端的Id不一定等于客户端HTML中的Id,比如说在ListView等控件的模板中。因此如果要在客户端通过JavaScript Dom、JQuery的getElementById、$("#id")来操作控件的话最好不要直接写服务端Id,而是

$('#<%=txt1.ClientID%>')。用JQuery事件设置鼠标移到控件上和从控件移开的不同样式。在用户控件中就可以看到ClientID和id的不同。

 (2)Visible 属性,控件是否可见,如果Visible=False是不会渲染到HTML中的,这和在HTML中给元素style.display='none'效果是不一样的。

 (3)CssClass 属性,控件的样式名,就是HTML中控件的class属性。也可以单独修改BackColor、BorderStyle等属性,但是不建议这么做,因为会生成很多的内联样式,生成html尺寸大,不便于统一的修改。

 (4)Attributes,用来设置获取控件的额外属性。和Dom中的setAttribute()、getAttribute()是一样的。Button1.Attributes["a1"]= "2.jpg";

Button1.Attributes["onmouseover"]= "alert('hello')";

 

TextBox控件,文本框控件。TextMode属性取值SingleLine、MultiLine、Password,分别渲染为input(type=text)、textarea和input(type=password)。当AutoPostBack属性为true的时候,用户焦点离开TextBox就会造成页面Post,实现原理就是讲ASP.Net原理时的AutoPostBack。TextChanged事件(需要AutoPostBack=true才会修改后触发,否则是页面提交才触发),文本发生变化的时候事件触发。ASP.Net中要提交表单的时候最好调用__doPostBack方法。

 

RadioButton控件,渲染为input(type=radio),通过GroupName属性进行分组

 

Button、LinkButton、ImageButton等控件都有CommandNameCommandArgument两个属性和Command事件,可以让多个按钮控件共享一个Command事件处理函数,通过读取事件对象e的CommandName、CommandArgument两个属性读取被点击按钮上设置的这两个参数来执行不同的操作。例子:编辑、删除多行数据。这种用法在ListView等控件中用的最多。

 

FileUpload控件,文件上传控件。渲染成input(type=file)。属性:FileContent以流形式获得上传的文件;FileName上传文件名;HasFile Bool值,表示用户是否选择文件,SaveAs方法用于将文件保存到磁盘的指定位置。漏洞:文件上传漏洞(上传一个下载源代码的aspx、Process.Start启动格式化,创建管理员、开启远程桌面)。解决方法:只允许上传指定类型文件,上传文件夹不给执行权限。WebShell

 

runat=server的HTML控件也会对虚拟路径、idClientID进行处理

直接在属性中有问题,会把<%直接输出到浏览器端,因此不要在控件的属性值中写<%%>。

 

RequiredFieldValidator

InitialValue        //如和设置的一样为错

IsValie                //是否已经验证

ValidationGroup

ValidateRequest="false"

CausesValidation

如果将按钮控件(Button、ImageButton、LinkButton)的CausesValidation属性设置为false,则这个按钮的点击不触发校验。


控件绑定:

<%@ Page language="c#" %>

<%@Import Namespace="System.Data" %>

<%@Import Namespace="System.Data.SqlClient" %>.

 

<scriptrunat="server">

voidPage_Load(Object sender, EventArgs e)

{

   SqlConnection cnn = new

      SqlConnection("server=(local);database=pubs;IntegratedSecurity=SSPI");

   SqlDataAdapter da = newSqlDataAdapter("select * from authors", cnn);

   DataSet ds = new DataSet();

   da.Fill(ds, "authors");

   Repeater1.DataSource =ds.Tables["authors"];

   Repeater1.DataBind();

}

</script>

<html>

<body>

   <form id="WebForm2"method="post" runat="server">

      <asp:Repeater id="Repeater1"runat="server">

         <ItemTemplate>

         <%#DataBinder.Eval(Container.DataItem,"au_id") %><br>

         </ItemTemplate>

      </asp:Repeater>

   </form>

</body>

</html>

 

<asp:RadioButtonList id="rb" runat="server" AutoPostBack="True" />
dim mycountries=New SortedList
  mycountries.Add("C","China")
  mycountries.Add("S","Sweden")
  mycountries.Add("F","France")
  mycountries.Add("I","Italy")
  rb.DataSource=mycountries
  rb.DataValueField="Key"
  rb.DataTextField="Value"
  rb.DataBind()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值