ASP.Net button第一次点击js中的回调函数不执行,第二次点击才执行

Lee丶Co 2017-06-16 12:50:31
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CheIndexOnce.aspx.cs" Inherits="Monkey.Web.admin.CheIndexOnce" %>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>管理员登录</title>
<link href="skin/login/Site.css" rel="stylesheet" />
<script type="text/javascript" src="../scripts/jquery/jquery-1.11.2.min.js"></script>
<script type="text/javascript">
$(function () {
//检测IE
if ('undefined' == typeof (document.body.style.maxHeight)) {
window.location.href = 'ie6update.html';
}
});

function jsFunction() {
PageMethods.Encrypt(document.getElementById("txtUserName").value, jiami);
PageMethods.Encrypt(document.getElementById("txtPassword").value, jiami2);
if (document.getElementById("posx").value != "") {
document.getElementById("txtPassword").value = "";
return true;
}
return false;
}



function jiami(val) //回传方法用val接受后台代码的执行结果
{
document.getElementById("posx").value = val;
}
function jiami2(val) //回传方法用val接受后台代码的执行结果
{
document.getElementById("posx2").value = val;
}
</script>
</head>

<body class="login_body">
<div class="login">
<div class="content">
<div class="logo">
<div class="logo_content">
<img src="skin/login/180.png" />
<div class="right_logo">

</div>
</div>
</div>
<div class="footer_content">
<hr />

<form id="form1" runat="server" class="form-login">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"> </asp:ScriptManager>
<ul>
<li>
<li>
<input id="txtUserName" type="text" class="loginipt user login-input " placeholder="用户名" title="用户名" /></li>
<li>
<input id="txtPassword" type="password" class="loginipt password login-input" autocomplete="off" placeholder="密码" title="密码" /></li>
<li>
<label id="msgtip" runat="server" class="logintext"></label>
</li>
<asp:Button ID="btnSubmit" runat="server" Text="登录" CssClass="loginbtn login-btn" OnClick="btnSubmit_Click" />
</ul>
<asp:HiddenField ID="posx" runat="server" />
<asp:HiddenField ID="posx2" runat="server" />
</form>

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

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

后台:
using System;
using System.Web.UI;
using Monkey.Common;
using System.Security.Cryptography;
using System.Configuration;
using System.Web;
using System.Text;
using System.Web.Services;


namespace Monkey.Web.admin
{
public partial class CheIndexOnce : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//txtUserName.Text = Utils.GetCookie(DTKeys.COOKIE_URL_ADMIN_NAME);
btnSubmit.Attributes.Add("OnClick", "return jsFunction()");
}

}

protected void btnSubmit_Click(object sender, EventArgs e)
{
string key = "ae125efkk4454eeff444ferfkny6oxi8";
string userName = "";
string userPwd = "";
try
{
userName = Request.Params["posx"];
userPwd = Request.Params["posx2"];
userName = Decrypt(userName, key);
userPwd = Decrypt(userPwd, key);
}
catch {
return;
}

if (userName.Equals("") || userPwd.Equals(""))
{
msgtip.InnerHtml = "请输入用户名或密码";
return;
}

if (Session[DTKeys.COOKIE_URL_ADMIN_LOGIN_SUN] == null)
{
Session[DTKeys.COOKIE_URL_ADMIN_LOGIN_SUN] = 1;
}
else
{
Session[DTKeys.COOKIE_URL_ADMIN_LOGIN_SUN] = Convert.ToInt32(Session["AdminLoginSun"]) + 1;
}
//判断登录错误次数
if (Session[DTKeys.COOKIE_URL_ADMIN_LOGIN_SUN] != null && Convert.ToInt32(Session[DTKeys.COOKIE_URL_ADMIN_LOGIN_SUN]) > 5)
{
msgtip.InnerHtml = "错误超过5次,关闭浏览器重新登录!";
return;
}

BLL.manager bll = new BLL.manager();
Model.manager model = bll.GetModel(userName, userPwd, true);
if (model == null)
{
msgtip.InnerHtml = "用户名或密码有误,请重试!";
return;
}

Session[DTKeys.SESSION_ADMIN_INFO] = model;
Session.Timeout = 45;
//写入登录日志
Model.siteconfig siteConfig = new BLL.siteconfig().loadConfig();
if (siteConfig.logstatus > 0)
{
new BLL.manager_log().Add(model.id, model.user_name, DTEnums.ActionEnum.Login.ToString(), "用户登录");
}

//写入Cookies
Utils.WriteCookie(DTKeys.COOKIE_URL_ADMIN_NAME, model.user_name, 14400);

//跳转
Response.Redirect("index.aspx");
return;
}

/// <summary>
/// AES加密
/// </summary>
/// <param name="encryptStr">明文</param>
/// <param name="key">密钥</param>
/// <returns></returns>
[WebMethod]
public static string Encrypt(string encryptStr)
{

string key = "ae125efkk4454eeff444ferfkny6oxi8";
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(encryptStr);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}

/// <summary>
/// AES解密
/// </summary>
/// <param name="decryptStr">密文</param>
/// <param name="key">密钥</param>
/// <returns></returns>
public static string Decrypt(string decryptStr, string key)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
byte[] toEncryptArray = Convert.FromBase64String(decryptStr);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return UTF8Encoding.UTF8.GetString(resultArray);
}
}
}
...全文
387 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 baidu_32111313 的回复:
[quote=引用 2 楼 sp1234 的回复:] 在 asp.net 中要想动调用一个方法,应该类似这样写:
void 某某处理方法(....)
{
    ......数据处理
   ScriptManager.RegisterStartupScript(this, this.GetType(), "abc",  "callfunction(1234, 'aaaa');", true);
这样在处理了数据之后,页面刷新时,调用函数 callfunction。 但是不能 Redirect 到其它页面,这也是一个逻辑问题。
实在不知该怎么弄 我就是想把用户名和密码 先在前台用aes加密了之后 再传递到后台 这到底该怎么弄呢[/quote] 、 后台不需要加密,前台加密!
  • 打赏
  • 举报
回复
引用 3 楼 baidu_32111313 的回复:
我就是想把用户名和密码 先在前台用aes加密了之后 再传递到后台 这到底该怎么弄呢
这有什么困难的? 你再后台先进行验证,用户登录信息是否正确。 如果正确,调用加密函数加密不就行了吗?干嘛非要加密后再传后台
Lee丶Co 2017-06-16
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
在 asp.net 中要想动调用一个方法,应该类似这样写:
void 某某处理方法(....)
{
    ......数据处理
   ScriptManager.RegisterStartupScript(this, this.GetType(), "abc",  "callfunction(1234, 'aaaa');", true);
这样在处理了数据之后,页面刷新时,调用函数 callfunction。 但是不能 Redirect 到其它页面,这也是一个逻辑问题。
实在不知该怎么弄 我就是想把用户名和密码 先在前台用aes加密了之后 再传递到后台 这到底该怎么弄呢
Lee丶Co 2017-06-16
  • 打赏
  • 举报
回复
我就是想把用户名和密码 先在前台用aes加密了之后 再传递到后台 这到底该怎么弄呢
  • 打赏
  • 举报
回复
在 asp.net 中要想动调用一个方法,应该类似这样写:
void 某某处理方法(....)
{
    ......数据处理
   ScriptManager.RegisterStartupScript(this, this.GetType(), "abc",  "callfunction(1234, 'aaaa');", true);
这样在处理了数据之后,页面刷新时,调用函数 callfunction。 但是不能 Redirect 到其它页面,这也是一个逻辑问题。
  • 打赏
  • 举报
回复
什么叫做“用val接受后台代码的执行结果”呢? 就算是你的 jsFunction 函数可移植性,它也是在 submit 动作之前执行,然后才提交到asp.net 的“后台”。怎么可能是“接受执行结果”呢?顶多是这里显示了上一次提交的结果。 你的逻辑错误。
代码转载自:https://pan.quark.cn/s/8ce4326d996e 对于在 CentOS 7 系统修改网卡配置文件后无法使设置生效的情况,经过实践验证,可以通过使用 nmcli 命令来进行调整。完成修改之后,需要重新启动虚拟机以使更改生效,这样操作流程即告完成。如果设置仍然无法生效,则表明虚拟机在启动过程所获取的 IP 地址配置并非针对 eth0,此时可以对其它网卡的配置文件进行修改或将其移除。在 CentOS 7 系统,网络配置的管理机制与早期版本存在差异,主要体现为采用了 Network Manager 服务来负责网络接口的管理。在某些情形下,尽管修改了 `/etc/sysconfig/network-scripts` 目录下的 `ifcfg-eth0` 文件,但网络配置却未能即时生效。此类问题的发生通常源于 CentOS 7 采用了不同于以往的配置读取方法。接下来将具体阐述如何借助 nmcli 命令来处理这一挑战。 以 root 用户身份登录系统并打开终端界面。nmcli 是 Network Manager 提供的命令行界面工具,它支持在命令行环境下执行网络连接的建立、编辑、查询及管理任务。针对修改 eth0 网卡配置的需求,可以遵循以下步骤进行操作: 1. 导航至 `/etc/sysconfig/network-scripts` 目录: ``` cd /etc/sysconfig/network-scripts ``` 2. 检查该目录内是否存在 `ifcfg-eth0.bak` 文件,该备份文件可能是先前调整配置时遗留下来的,若存在可能造成冲突。若发现该文件,可以选择将其删除: ``` [root@localhost netw...
代码转载自:https://pan.quark.cn/s/46fd08fb879c 网管教程 从入门到精通软件篇 ★一。★详尽的xp修复控制台指令及其应用!!! 放入xp(2000)的光盘,安装时选择R,执行修复! Windows XP(涵盖 Windows 2000)的控制台指令是在系统遭遇某些意外状况时的一种极具效用的诊断、检测以及恢复系统功能的工具。笔者确实一直期望能够将这方面的指令进行归纳,此次由老范辛苦整理了这份极具价值的秘籍。 Bootcfg bootcfg 命令用于启动配置与故障恢复(对大多数计算机而言,即 boot.ini 文件)。 带有特定参数的 bootcfg 命令仅在运用故障恢复控制台时方可使用。能够在命令行界面下运用带有不同参数的 bootcfg 命令。 用法: bootcfg /default 设定默认引导选项。 bootcfg /add 向引导清单增添 Windows 安装。 bootcfg /rebuild 重复整个 Windows 安装流程并让用户选择需添加的项目。 注意:运用 bootcfg /rebuild 之前,应先借助 bootcfg /copy 命令备份 boot.ini 文件。 bootcfg /scan 探查用于 Windows 安装的全部磁盘并展示结果。 注意:这些结果被静态存储,并用于当前会话。若在当前会话期间磁盘配置发生变动,为获取更新的探查结果,必须先重启计算机,然后再次探查磁盘。 bootcfg /list 列示引导清单已有的项目。 bootcfg /disableredirect 在启动引导程序禁用重定向。 bootcfg /redirect [ PortBaudRrate] |[ useBio...

62,269

社区成员

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

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

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

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