验证码局部刷新,使用UpdatePanel刷新不了,请各位大神指点一下功能为何实现不了,样式请忽略~

Sanlence 2016-08-02 04:25:28
代码量太多,所以我只是贴出一部分前台代码:
Login.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
#warning {
font-family : 微软雅黑,宋体;
font-size : 12px;
color : #ff0000;
}
</style>
<script src="jquery-1.11.3/jquery.js"></script>
<script type="text/javascript">
function veritySubmitNull() {
var uname = document.getElementById("user_name").value;
if (uname == null || uname == "") {
document.getElementById("warning").textContent = "用户名不能为空!";
return false;
}

var upwd = document.getElementById("user_pwd").value;
if (upwd == null || upwd == "") {
document.getElementById("warning").textContent = "密码不能为空!";
return false;
}

var userPattern = /[A-Za-z0-9]{4,20}/;
var flag = userPattern.test(uname);
if (flag == false) {
document.getElementById("warning").textContent = "用户名只能由英文大小写字母组成!";
return false;
}

var pwdPattern = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{8,18}$/;
flag = pwdPattern.test(upwd);
if (flag == false) {
document.getElementById("warning").textContent = "密码必须由8-16位字母、数字、特殊符号线组成.!";
return false;
}

return true;
}

function f_refreshtype() {
var Image1 = document.getElementByIdx_x_x_x("vcImage");
if (Image1 != null) {
Image1.src = Image1.src + "?";
}
}

</script>
</head>
<body>

<form id="form1" runat="server" defaultbutton="Submit" defaultfocus="user_name">
<div>
<div class="title">

</div>
<div class="login">
用户名:<asp:TextBox ID="user_name" runat="server" Width="174px" Height="20px"></asp:TextBox>
<br /><br />
密 码:<asp:TextBox ID="user_pwd" runat="server" TextMode="Password" Width="174px"
Height="20px"></asp:TextBox>
<br /><br />
验证码:<asp:TextBox ID="code" runat="server" Width="174px" Height="20px"></asp:TextBox>
<br /><br />
  
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:ImageButton ID="vcImage" runat="server" AlternateText="图片验证码"
ImageUrl="~/CreateCode.aspx" />
<asp:Button ID="refreshCode" runat="server" Text="换个验证码" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="refreshCode" />
</Triggers>

</asp:UpdatePanel>
<%--<asp:ImageButton ID="vcImage" runat="server" AlternateText="图片验证码" ImageUrl="~/CreateCode.aspx"
OnClientClick="f_refreshtype()" />--%>

<br /><br />
    
<asp:Button ID="Submit" runat="server" Text="登录" OnClick="Submit_Click"
OnClientClick="return veritySubmitNull()" Height="25px" Width="54px"
BackColor="#0099ff"/>
 
<input id="Reset" type="reset" value="重置" style="width: 54px; height: 25px; background-color: #0099ff" />
<br /><br />
    
<asp:Label ID="warning" runat="server" Text=""></asp:Label>

</div>
<div class="footer">

</div>
</div>
</form>
</body>
</html>

关注点:
1、首先,如果注释掉加粗代码,使用斜体的替代,验证码刷新是可以的;
2、其次,如果用上面的代码,刷新不了验证码,按下refresh按钮没有任何变化;

本人asp.net小菜鸟,请教大神们,出现这种情况是为什么呢?需要怎么修改?谢谢!
...全文
491 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2016-08-03
  • 打赏
  • 举报
回复
就在客户端刷新就可以,去掉UpdatePanel, 1、在aspx里,将<asp:Button ID="refreshCode" runat="server" Text="换个验证码" />替换为:

<a href="javascript:void(0);" onclick="return code();"><span style="color:Black;">换一张</span></a>
2、添加js函数,在<script type="text/javascript">里添加

function code() 
      { 
        var mycode=document.getElementById("vcImage");
        mycode.src=mycode.src+"?";
        
      } 
点击“换一张”,就可以刷新了
秋的红果实 2016-08-03
  • 打赏
  • 举报
回复
一、用客户端控件和js动作 你用的是ImageButton,这种场合用html控件最好,省的发回到服务器处理,浪费时间 你改成这样: 1、去掉Updatepanel 2、将 <asp:ImageButton ID="vcImage" runat="server" AlternateText="图片验证码" ImageUrl="~/CreateCode.aspx" /> 改成:<img alt="" id="vcImage" src="../CreateCode.aspx" /> 加上


<a href="javascript:void(0);" onclick="return code();"><span style="color:Black;">换一张</span></a>

3、2、添加js函数,在<script type="text/javascript">里添加


function code() 
      { 
        var mycode=document.getElementById("vcImage");
        mycode.src=mycode.src+"?";
        
      } 

上面代码一定可以执行! 二、用服务器控件和C# 关于用UpdatePanel 换个验证码 这个按钮要放到UpdatePanel外面,否则不行

<asp:Button ID="refreshCode" runat="server" OnClick="refreshCode_Click" Text="换个验证码" />
<br />
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:ImageButton ID="vcImage" runat="server" ImageUrl="../CreateCode.aspx" />
    </ContentTemplate>
</asp:UpdatePanel>

另外,在设计界面双击“换个验证码”这个按钮,添加click事件, <asp:Button ID="refreshCode" runat="server" OnClick="refreshCode_Click" Text="换个验证码" /> refreshCode_Click里面什么也不要写,原理是:点击后,回发到服务器,然后服务器重绘页面,那个img就更新了验证码 验证码绝大部分是用客户端控件的
Sanlence 2016-08-03
  • 打赏
  • 举报
回复
我想出来了在UpdatePanel不能这么使用客户端的javascript代码,只需要把javascript代码换成服务端完成就可以了。谢谢上面各位的回答!
Sanlence 2016-08-03
  • 打赏
  • 举报
回复
引用 4 楼 秋的红果实的回复:
就在客户端刷新就可以,去掉UpdatePanel, 1、在aspx里,将<asp:Button ID="refreshCode" runat="server" Text="换个验证码" />替换为:

<a href="javascript:void(0);" onclick="return code();"><span style="color:Black;">换一张</span></a>
2、添加js函数,在<script type="text/javascript">里添加

function code() 
      { 
        var mycode=document.getElementById("vcImage");
        mycode.src=mycode.src+"?";
        
      } 
点击“换一张”,就可以刷新了
另外能看一下我使用UpdatePanel错在哪里吗?
Sanlence 2016-08-03
  • 打赏
  • 举报
回复
引用 4 楼 From_TaiWan 的回复:
就在客户端刷新就可以,去掉UpdatePanel,
1、在aspx里,将<asp:Button ID="refreshCode" runat="server" Text="换个验证码" />替换为:

<a href="javascript:void(0);" onclick="return code();"><span style="color:Black;">换一张</span></a>


2、添加js函数,在<script type="text/javascript">里添加

function code()
{
var mycode=document.getElementById("vcImage");
mycode.src=mycode.src+"?";

}


点击“换一张”,就可以刷新了

不好意思,本来点的是对我有用,点错了点成了“”丢个板砖”。。。
我按照你的方法试了,它会造成另外一个问题,点击换一张之后,验证码不出现了,如下图所示:
Sanlence 2016-08-02
  • 打赏
  • 举报
回复
引用 1 楼 N_Share_Service的回复:
用AJAX 去请求吧.判断到错误一次!就去请求回来一个新的
因为我这个是提供给特殊的单位用的,验证码总是换来换去别人会特别反感。
Sanlence 2016-08-02
  • 打赏
  • 举报
回复
引用 1 楼 woainilll 的回复:
用AJAX 去请求吧.判断到错误一次!就去请求回来一个新的
那如果我这种使用方式的话,错在哪里呢?应该怎么修改呢?谢谢!
誰是方長 2016-08-02
  • 打赏
  • 举报
回复
用AJAX 去请求吧.判断到错误一次!就去请求回来一个新的
源码下载地址: https://pan.quark.cn/s/c20c5da6957d 卸载 首先,需要核实是否存在先前安装的记录,或者系统是否预置了httpd服务,可通过以下命令进行验证: # rpm -qa | grep httpd 或者: # yum list | grep httpd 我之前已经进行过一次安装,因此在此会看到相应的显示结果: 然后我将着手卸载我的httpd,首要步骤是终止httpd服务的运行,对应的命令如下: # systemctl stop httpd.service 接着,无论是使用 rpm -e 还是 yum -erase 命令均可实现卸载,但需注意使用rpm -e命令前必须自行移除相关依赖包,因此我选择使用yum -erase命令进行卸载,具体命令为: # yum erase httpd.x86_64 在执行过程中会提示确认操作 在Linux环境中,CentOS 7 是一种非常普遍的操作系统,特别是在服务器应用方面。Apache HTTP Server(通常简称为Apache或httpd)是最广受欢迎的网页服务器软件之一,主要用于承载网站及相关服务。本资源将详尽说明在CentOS 7系统中关于Apache服务的安装与移除流程。 ### 移除Apache服务 1. **核实安装情况**: 在执行卸载操作前,必须先确认Apache是否已安装。这可以通过查询已安装的软件包列表来完成,可选用以下任一命令: ```bash # rpm -qa | grep httpd # yum list | grep httpd ``` 若Apache已安装,上述命令将返回相关的软件包信息。 2. **终止服务运行**: 在卸载前,必须先停止正在运行的A...
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 在信息技术行业,特别是在操作系统部署及维护方面,统一可扩展固件接口(UEFI)与Linux系统如Debian的相互配合是一个关键议题。本篇将深入分析"在Debian 9.13系统中通过UEFI启动的UEFI Shell"这一焦点,并阐述如何处理安装期间遭遇的启动障碍。 UEFI作为替代传统BIOS的新型固件架构,它带来了更为先进、更为安全的启动机制,同时支持更大容量的存储设备以及更迅捷的启动时间。在部署Debian 9.13(Stretch版本)时,用户可以选择运用UEFI模式进行安装,从而获取上述种种好处。然而,UEFI启动过程需要特定的引导管理器,一般而言是GRUB2的UEFI版本,即称作grubx64.efi。 描述中所述情形可能是由于安装阶段GRUB2引导管理器的UEFI版本未能被恰当地生成或设置,因而系统无法经由UEFI模式启动。在此情形下,"uefishell"工具便显得尤为重要。UEFI Shell是一个命令行界面,它允许用户在UEFI环境中执行多样任务,包括手动引导操作系统。它提供了一个临时的补救措施,使用户得以纠正引导故障。 为了借助UEFI Shell来纠正启动故障,必须遵循以下步骤: 1. **获取UEFI Shell**:通常,UEFI Shell作为现代计算机UEFI固件的一部分预先安装,但在某些情况下,可能需要从设备制造商的官方网站上获取最新版本。 2. **插入搭载UEFI Shell的USB存储设备**:将下载的UEFI Shell文件拷贝至一个采用FAT32格式化的USB存储设备上,并将其接入计算机。 3. **进入UEFI配置界面**:重新...

62,270

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧