---------------------- Windows Phone 7手机开发、Net培训、期待与您交流! ----------------------
黑马程序员--.Net学习日记——Input和div版本自增
练习:
input版本的自增
htm页面代码:
<body>
<form action="Handler.ashx">
<input type="hidden" name="ispostback" value="true" />
<input type="text" name="number" value="@value" /><input
type="submit" value="自增" />
</form>
</body>
ashx页面代码:
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/html";
string ispostback = context.Request["ispostback"];
string number = context.Request["number"];//通过表单得到的数
据都是string类型
if (ispostback == "true")//说明是点击自增进来的,需要把当前数
值自增
{
int i = Convert.ToInt32(number);
i++;
number = i.ToString();
}
else
{
number = "0";
}
string fullpath = context.Server.MapPath("HTMLPage.htm");//直
接填文件名得不到,必须转换为全路径
string content = System.IO.File.ReadAllText(fullpath);
content = content.Replace("@value", number);//将文件中的占位
符替换为值
context.Response.Write(content);
//context.Response.Write("Hello World");
}
div版本的自增:
htm页面代码:
<body>
<form action="Handler.ashx">
<input type="hidden" name="fanhui" value="true" />
<input type="hidden" name="num1" value="@value" />
<div>@value</div>
<input type="submit" value="自增" />
</form>
</body>
ashx页面代码:
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/html";
string fanhui = context.Request["fanhui"];
string value = "0";
if (fanhui == "true")
{
value = context.Request["num1"];
int i = Convert.ToInt32(value);
i++;
value = i.ToString();
}
string fullpath = context.Server.MapPath("HTMLPage.htm");
string content = System.IO.File.ReadAllText(fullpath);
content = content.Replace("@value", value);
context.Response.Write(content);
//context.Response.Write("Hello World");
}
为什么单使用div在服务器取不出来值呢?因为不是服务器来读取客户的网页,而
是浏览器收集客户在表单中输入的字段,然后形成请求参数发给服务器处理程序
,由于没有把div当前的的innerText发给服务器,所以服务器无法得知当前的值,
也不好幻想有办法能将div的innerText提交给服务器,因为只有设定了name的
input,textarea,select的value属性值才会被提交给服务器.
实现div内文本的自增,因为服务器不记得上次给浏览器的值是什么,而且不像
input那样会将上次的值重新提交回来,因此浏览器需要用一个隐藏字段将上次
的值保存下来.
非表单元素无法将客户端的元素之传递给服务器端,即使是表单元素也只能传递
value值,对于属性值比如背景颜色,大小等也是无法传递的,因此对于这些值都
要存在隐藏字段中,这就是ASP.NET中ViewState实现原理
其实div中的只是起到显示作用而已,使用IE的"开发人员工具"修改div的
innerText,然后点击按钮发现只并没有按照我们修改以后的递增.而修改input
版本的则有效果.
---------------------- Windows Phone 7手机开发、Net培训、期待与您交流! ----------------------
详细请查看:http://net.itheima.com/