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);
}
}
}
...全文
389 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 的“后台”。怎么可能是“接受执行结果”呢?顶多是这里显示了上一次提交的结果。 你的逻辑错误。
内容概要:本文提出了一种基于非合作博弈理论的居民负荷分层调度模型,并结合双层鲸鱼优化算法(Two-level Whale Optimization Algorithm)进行高效求解,模型与算法均通过Matlab代码实现。研究针对电力系统居民侧用电负荷的复杂调度问题,引入非合作博弈机制刻画各用户之间的利益竞争关系,实现负荷的分层优化分配;同时设计双层优化架构,上层优化资源配置,下层模拟用户自主决策行为,提升了模型的实用性与合理性。通过智能优化算法求解多层级、非凸非线性的博弈模型,有效提高了调度方案的收敛性与全局寻优能力,适用于现代智能电网的需求侧管理与能源优化场景。; 适合人群:具备电力系统基础理论知识和Matlab编程能力,从事智能电网、能源优化调度、需求侧管理、博弈论应用等方向的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①应用于居民区电力负荷的分层优化调度系统设计与仿真分析;②为非合作博弈在多主体能源系统建模的应用提供方法论支持;③利用双层鲸鱼算法解决具有嵌套结构的复杂双层优化问题,提升求解效率与调度方案的可行性。; 阅读建议:建议读者结合提供的Matlab代码深入理解模型构建逻辑与算法实现流程,重点关注博弈模型的效用函数设计、纳什均衡求解思路以及双层优化结构的迭代机制,宜配合实际用电数据开展复现实验以验证模型有效性与鲁棒性。
内容概要:本文围绕基于自适应神经模糊推理系统(ANFIS)智能控制器的可再生能源微电网功率管理系统展开研究,结合Simulink仿真实现,深入探讨了微电网功率的智能调控与经济机组组合调度问题。通过引入ANFIS控制器,有效应对风能、光伏等可再生能源出力的波动性与不确定性,提升系统运行的稳定性与电能质量。研究内容涵盖微电网多源协调控制策略、功率平衡管理、优化调度模型构建及仿真验证,实现了对分布式电源、储能系统和负荷的协同优化,兼顾经济性与可靠性目标,并通过仿真平台验证了所提方法的有效性与优越性。; 适合人群:具备电力系统、自动化或新能源相关专业背景,熟悉Matlab/Simulink仿真环境,从事微电网能量管理、智能控制、能源优化等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高比例可再生能源接入场景下的微电网能量管理系统研发与教学实践;②为实现微电网功率稳定控制与经济高效运行提供先进的智能控制解决方案;③支撑高水平学术论文复现、科研课题攻关及实际工程项目的仿真验证与方案优化。; 阅读建议:建议结合提供的Simulink模型与相关代码进行动手实践,重点关注ANFIS控制器的设计流程、规则库构建与参数调优方法,并通过与传统PID或MPC控制策略的对比实验,深入理解其在动态响应与鲁棒性方面的优势。同时可进一步拓展文提出的优化调度逻辑,应用于多目标、多约束的复杂实际应用场景

62,269

社区成员

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

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

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

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