黑马程序员-ASP初级

本文介绍了ASP.NET的基础知识,包括HTTP协议的工作方式、GET和POST的区别、ViewState、Cookie和Session的原理及应用场景。通过实例展示了如何在ASP.NET中使用这些技术,强调了HTTP的无状态特性以及如何处理状态信息。此外,还讨论了客户端验证与服务器端验证的重要性,以及数据提交的安全性和最佳实践。
摘要由CSDN通过智能技术生成

------------------------------ Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

127.0.0.7是回环地址(LookBack),就是表示访问本机,LocalHost是它的别名。是无法在外部访问的。查看IP地址:ipconfig

 

GetPost的区别:

设定FormMethod属性指定表单提交方式,Get(默认值)是通过URL传递表单值,Post传递的表单值是隐藏到Http报文件中, URL中看不到。

GetPost的区别:Get是通过URL传递表单值,Post通过URL看不到表单域的值;Get传递的数据量是有限的,如果要传递大量数据不能用Get,比如Type="file"上传文章、Type="password"传递密码或者<textarea>发表大段文章,Post则没有这个限制;Post会有浏览器提示重新提交表单的问题,Get则没有。对于Post的表单位重新敲地址栏再刷新就不会提示重新提交了中,因为重新敲地址就没有偷偷提交的数据了。

Get方式URL数据格式,服务器文件名后跟着“?”,由于客户端可能向服务器端提交多个键值对,键值对之间用“&”进行分割,如果URL中有汉字、特殊符号等,则需要对URL进行编码。

表单域只有设定了Name的才会被提交给服务器(用Get方式看的清楚)。如果给Submit按钮设定Name,那以按钮的Value也会被提交给服务器。

例:

<head>

   <title></title>

</head>

<body>

<form action ="Hello.ashx"method="post">

<input type ="hidden"name="ispostback" value ="true" />

用户名:<input type ="text" name="UserName"value="@value" />

<input type ="submit" value ="提交" />

@msg

</form>

</body>

</html>

<%@ WebHandler Language="C#"Class="Hello" %>

 

using System;

using System.Web;

 

public class Hello : IHttpHandler {

   

   public void ProcessRequest (HttpContext context) {

       context.Response.ContentType = "text/html";

       

 

       //string username = context.Request["UserName"];

       //if (string.IsNullOrEmpty(username))

       //{

       //   context.Response.Write("直接进入");

       //}

       //else

       //{

       //    context.Response.Write("提交进入");

       //}

       string username = context.Request["UserName"];

       string msg="";

       string ispostback = context.Request["ispostback"];

       if (ispostback == "true")

       {

           context.Response.Write("提交进入");

           msg = username + "你好!";

       }

       else

       {

           context.Response.Write("直接进入");

           username = "";

           msg = "";

       }

       string fullpath = context.Server.MapPath("Hello.htm");//得到文件的全路径

       string content = System.IO.File.ReadAllText(fullpath);//读取文件

       content=content.Replace("@value",username);

       content = content.Replace("@msg", msg);

       context.Response.Write(content);

    }

 

    publicbool IsReusable {

       get {

           return false;

       }

    }

 

}

ViewState初探(重点,常考)

Label版本的值存到了ViewState中,TextBox版本的不用存,因为TextBox就是Input,自己就会提交给服务器,不需要隐藏字段。

Asp.net重写Div文本自增(还要同时递增Label的宽度,注意Width的单位是Unit类型,不是简单的Int

Label1.Text=(Convert.ToInt32(Label1.Text)+1).ToString)_;

Label1.Width=new Unit(Label1.Width.Value+10);

查看生成的源代码,ASP.Net将所有隐藏内容统一放到了名字为_VIEWSTATE的隐藏字段中,使用序列化算法将所有隐藏内容放到一个字符串中。点击几次在使用ViewStateDecode这个工具查看ViewState内容,发现了确实将这些改变的内容放到了ViewState中。存储非表单域、非Value值的容器。

禁用ViewState的方法:禁用单个控件的ViewState设定enableviewstate=false,禁用ViewState以后TextBox版本不受影响,Div版本受影响,因为InputValue不依靠ViewState。禁用整个页面的在AspxPage指令加上 EnableViewState="false" 。内网系统、互联网的后台可以尽情的用ViewState

回答ViewState

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值