我在做ASP.Net网站时用C#语言编写,现在添加用户的页面上有一个“Button”按钮,下面是其“Button”的单击代码: protected void Button1_Click(object sender, EventArgs e)
{
OleDbDataReader dr = db.ExecuteReader("SELECT * FROM w_user WHERE w_name='" + w_name.Text + "'");
if (dr.Read())
{
Response.Write("<script>alert('用户名重复,请更换其他ID!')</script>");
}
else
{
string password = FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox2.Text, "MD5");
db.ExecuteNonQuery("INSERT INTO w_user (w_name,w_pass) VALUES ('" + w_name.Text + "','" + password + "')");
Response.Write("<script>alert('添加成功!')</script>");//弹出提示信息
}
dr.Close(); Response.Redirect("admin_admin.aspx");
}代码看似没有任何问题,当我单击按钮时,代码却并没有按照预期的执行。if语句似乎只是一个摆设,直接执行else里面的代码,奇怪吧?我这是添加用户的页面,比如说表里面已经有一个“admin”的用户,当我填写表单时故意将用户名填成“admin”,提交表单时应该提示“用户名重复……”才对,可是没有,代码直接跳过,执行else里面的插入数据库操作,最后跳转到admin_admin.aspx页面。
这让我很困惑,究竟是什么原因造成这种状况呢?后来,我无意中将Response.Redirect("admin_admin.aspx")这行代码删除时,却发现前面的代码执行就变得一切正常。这是否算C#语言的BUG呢?
{
OleDbDataReader dr = db.ExecuteReader("SELECT * FROM w_user WHERE w_name='" + w_name.Text + "'");
if (dr.Read())
{
Response.Write("<script>alert('用户名重复,请更换其他ID!')</script>");
}
else
{
string password = FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox2.Text, "MD5");
db.ExecuteNonQuery("INSERT INTO w_user (w_name,w_pass) VALUES ('" + w_name.Text + "','" + password + "')");
Response.Write("<script>alert('添加成功!')</script>");//弹出提示信息
}
dr.Close(); Response.Redirect("admin_admin.aspx");
}代码看似没有任何问题,当我单击按钮时,代码却并没有按照预期的执行。if语句似乎只是一个摆设,直接执行else里面的代码,奇怪吧?我这是添加用户的页面,比如说表里面已经有一个“admin”的用户,当我填写表单时故意将用户名填成“admin”,提交表单时应该提示“用户名重复……”才对,可是没有,代码直接跳过,执行else里面的插入数据库操作,最后跳转到admin_admin.aspx页面。
这让我很困惑,究竟是什么原因造成这种状况呢?后来,我无意中将Response.Redirect("admin_admin.aspx")这行代码删除时,却发现前面的代码执行就变得一切正常。这是否算C#语言的BUG呢?
解决方案 »
- repeater绑定两个表属性。。
- 不显示删除回复显示所有回复显示星级回复显示得分回复 解决ASP.NET中的文件上传下载大小限制的问题
- 显示类别问题,在线等高手
- HTML编辑器基本功能是怎么做的
- 数据库问题 为什么颜色 不一样?无法成功执行
- 关于Request.UrlReferrer获取IP的问题
- >>>求助<<< 如何可以使得无论打开 Web 应用程序中的任何页面,都会执行同一段代码?
- 初学asp.net,刚开始做项目,总遇到问题,郁闷死了,高手帮我看看,这个数组应该怎么写
- 请教Public,Private,Protected这三个的用法
- 关于aspnetmenu菜单会被其他如ocx控件挡住,真的没人知道吗?http://expert.csdn.net/Expert/topic/2432/2432627.xml?temp=.4401361一共1
- 老问题,但一直没有找到一个好的容易的解决办法 ie7 不支持<base target="_self">吗?打开模态窗口,点击按钮时,就是弹出一个新页面.
- 如何用JS获得动态创建的控件的类型属性??如为textbox或dropDownList..
alert('用户名重复,请更换其他ID!');window.location='admin_admin.aspx';
script>alert('添加成功!')</script>");window.location='admin_admin.aspx';删除Response.Redirect("admin_admin.aspx");这句。
Response.Redirect("admin_admin.aspx");---以下称第二句。假如你的当前页面也是admin_admin.aspx;
这两句在服务器上运行
第一句把<script>alert('用户名重复,请更换其他ID!')</script>写入已经读入内存的admin_admin.aspx,客户端还没有收到这个文件。
第二句重新从磁盘上读入admin_admin.aspx并发送到客户端。这里面不包括alert提示。执行过程是没有问题的,不可能出现“if语句似乎只是一个摆设,直接执行else里面的代码”,只不过是当前页面还没有显示出来就被你换了一个页面。好好了解一下前后台的关系,以及网页的传递过程。