A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 喻健 中级黑马   /  2012-6-5 23:38  /  2065 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚刚看asp.net的视频,讲到这个的时候的一个例子是:
  1. context.Response.ContentType = "text/html";
  2.         string fullPath = context.Server.MapPath("hello2.htm");
  3.         string content = File.ReadAllText(fullPath);
  4.         context.Response.Write(content);
  5.         
  6.         string userName=context.Request["UserName"];
  7.         if (string.IsNullOrEmpty(userName))
  8.         {
  9.             context.Response.Write("刷新进入");
  10.         }
  11.         else
  12.         {
  13.             context.Response.Write("提交进入");
  14.         }
复制代码
我想知道的是,如果我在单元格中不输入值直接点提交,这个是算提交进入还是刷新进入呢 ?我感觉是提交啊.但是结果是刷新.
hello2.htm代码如下.
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" >
  3. <head>
  4.     <title>无标题页</title>
  5. </head>
  6. <body>
  7. <form action="hello2.ashx">
  8. 姓名:<input type="text" name="UserName" /><input type="submit" value="提交" name="tijiao" />
  9. </form>
  10. </body>
  11. </html>
复制代码

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

5 个回复

倒序浏览
我晕死,你自己写的代码自己都不知道什么意思啊?你只是用表单提交到后台一个一般处理程序.ashx 文件中了,并没有做Ajax处理啊,怎么会不刷新呢,无论你文本框写不写内容,页面都刷新只是你输出的值不一样而已!
        string userName=context.Request["UserName"];  //接收表单的值
        if (string.IsNullOrEmpty(userName))//判断如果userName为空或是Null返回True
        {
            context.Response.Write("刷新进入");//为空就会跳到这段代码来
        }
        else
        {
            context.Response.Write("提交进入");//不为空就不会跳到这儿来,也就是你的文本框有值提交给表单
        }

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
朱亮辉 发表于 2012-6-6 10:21
我晕死,你自己写的代码自己都不知道什么意思啊?你只是用表单提交到后台一个一般处理程序.ashx 文件中了, ...

好吧 我不知道这里跟AJAX有什么关系。也不懂。能再通俗点讲解下嘛?
回复 使用道具 举报
喻健 发表于 2012-6-6 10:40
好吧 我不知道这里跟AJAX有什么关系。也不懂。能再通俗点讲解下嘛?

晕,看的快了,你的问题没搞清楚,Ajax是无刷新提交表单,很简单的你可以用Jquery中的post,get,ajax方法实现无刷新提交表单。

从新在解释一下你的问题,你不填写值然后点击按钮也是提交表单的行为,你刷新页面不会提交表单,但是你做判断的时候只是判断文本框为空就是刷新进入,跟你文本框不填写值判断的结果是一样的,所以才会出现你现在的问题!

现在给你解决一下这个问题,先解释一下,刷新进入页面userName会是Null因为根本没有提交表单,所以表单的内容全部为Null,而你点击submit按钮提交标点进入,虽然文本框没有值,但是userName的值不是Null而是 '' 空字符串 你不要用string.IsNullOrEmpty判断,分开判断就可以区分开两者。

if(userName==null)
{
context.Response.Write("刷新进入");
}else
{
context.Response.Write("提交进入");
}


你可以设置断点调试一下试试程序,就知道了区别了,Null跟空字符是不想等的,Null是Null,空字符串是Empty

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
宋天琪 + 1
喻健 + 2 很给力!

查看全部评分

回复 使用道具 举报
朱亮辉 发表于 2012-6-6 12:18
晕,看的快了,你的问题没搞清楚,Ajax是无刷新提交表单,很简单的你可以用Jquery中的post,get,ajax方法 ...

这么一看 我倒觉得我的理解没错,是例子错了。空值点提交也是算提交进入,但是例子是用IsNullOrEmpty判断,就如你说的,总是真,所以总显示刷新进入。
回复 使用道具 举报
这跟你写的代码的一样的,因为不输入值就提交,在服务器端获取的UserName为空。
string.IsNullOrEmpty(userName)这一句为true
所以为刷新进入

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马