谢谢各位的指教,此问题已得到解决了,引用我认为最佳 的答案:
("<input type='hidden' name='hiddenIsPostBack' value='1' />");这个隐藏域是为了实现回调作用的,也就是说通过获取这个隐藏域的值string hiddenIsPostBack=context.Request.Form["hiddenIsPostBack"];然后在判断其是否为空if (!string.IsNullOrEmpty("hiddenIsPostBack"))来判断对_06Caculate.ashx这个页面是第一次访问加载,还是因为提交表单回发而加载。(因为这个计算器的html代码输出和表单提交后的处理都是通过_06Caculate.ashx这个页面来完成。作者的本意是要实现,第一次用户访问这个页面是显示计算器的表单界面,当用户点击提交按钮后显示计算的结果)上述程序的错误之处在于:没有先通过string hiddenIsPostBack=context.Request.Form["hiddenIsPostBack"];获取。所以执行结果始终不会改变。
原问题如下:
请问一下这句话到底是干嘛的呢? sb.Append("<input type='hidden' name='hiddenIsPostBack' value='1' />");
求解啊,谢谢
<%@ WebHandler Language="C#" Class="_06Caculate" %>
using System;
using System.Web;
using System.Text;
public class _06Caculate : IHttpHandler {
public void ProcessRequest (HttpContext context) {
string Num1 = context.Request.Form["txtNum1"];
string Num2 = context.Request.Form["txtNum2"];
int x = 0;
int y = 0;
int z = 0;
if (!string.IsNullOrEmpty("hiddenIsPostBack"))
{
if (!string.IsNullOrEmpty(Num1) && !string.IsNullOrEmpty(Num2))
{
if (int.TryParse(Num1, out x) && int.TryParse(Num2, out y))
{
z = x + y;
}
}
}
else
{
}
StringBuilder sb = new StringBuilder();
sb.Append("<form action='' method='post'>");
sb.Append("<html><head><title>计算器</title></head><body>");
sb.Append("<input type='text' name='txtNum1' value='" + x.ToString() + "'/>");
sb.Append("<input type='text' name='txtNum2' value='" + y.ToString() + "'/> <br> =");
sb.Append("<input type='text' name='txtSum' value='" + z.ToString() + "'/> ");
sb.Append("<input type='submit' name='submit' value='计算'/>");
sb.Append("<input type='hidden' name='hiddenIsPostBack' value='1' />");
sb.Append("<a href='04Register.ashx?a=james'>注册</a>");
sb.Append("</form>");
sb.Append("</body></html>");
context.Response.Write(sb.ToString());
}
public bool IsReusable {
get {
return false;
}
}
} |