当前位置: 首页 > news >正文

Asp.Net+Extjs实现登录

      通过对Ext的学习,发现学习分三部曲:1.看官网的Demo,宏观了解Ext能做什么;2.看相关书籍,做理论指导;3.实现官网的Demo,体会Ext的真谛。

   在完毕了第一、二部后,如今我们须要做的是实现第三步,我的目标效果是用Extjs画页面,用Asp.Net的一般处理程序做后台server实现登录功能。

   宏观上的指导有了,以下进行细分,我整理了实现过程,思路例如以下:

   1.画一个登录的Panel--loginPanel;
   2.定义一个检測是否登录成功的函数CheckLogin;
   3.定义一个登录窗口--win,将loginPanel加入到登录窗口中;
   4.在登录窗口中加入“确定”和“取消”,为“确定”button绑定登录验证函数CheckLogin;  
   5.为登录窗口绑定一个最小化事件;
   6.定义一个登录成功弹出新窗口函数loginSuccess

   有了理论指导,以下进行代码实现:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <link href="css/ext-all.css" rel="stylesheet" type="text/css" />
    <script src="js/ext-base.js" type="text/javascript"></script>
    <script src="js/ext-all.js" type="text/javascript"></script>
    <script type="text/javascript" language="javascript">
        var loginPanel;
        Ext.onReady(function () {
            //1.画一个登录的Panel
            loginPanel = new Ext.form.FormPanel({
                labelWidth: 40,
                width: 230,
                height: 120,
                frame: true,
                bodyStyle: "padding:20", //给这个面板加入内间距  
                items: [
                        { xtype: "textfield", id: "userName", fieldLabel: "username", style: "margin:1 3 15 3", labelWidth: 10, emptyText: "请输入username...", allowBlank: false, blankText: "username不能为空" },
                     { xtype: "textfield", id: "userPass", fieldLabel: "密   码", style: "margin:1 3 15 3", labelWidth: 10, inputType: "password" }
                  ]
            });

            //2.定义一个检測是否登录成功的函数CheckLogin
            function CheckLogin() {
                var userName = Ext.getCmp("userName").getValue(); //username
                var userPass = Ext.getCmp("userPass").getValue(); //密 码 

                if (Ext.util.Format.trim(userName) == "" || Ext.util.Format.trim(userPass) == "") {//username和password不能为空   
                    Ext.Msg.alert("提示", "username或password不能为空");
                    return;
                }

                Ext.Ajax.request({
                    url: "Extjs.ashx?userName=" + userName + "&passWord=" + userPass, //将username和password传送到url   
                    method: "get",
                    success: function (response) {
                        var getData = response.responseText; //获取服务器数据 
                        if (getData == "ok") {
                            loginSuccess(); //登录成功了    
                        } else {
                            Ext.Msg.alert("警告", "登录失败!");
                        }
                    }, failure: function (response, options) { alert("失败"); }
                });
            }

            //3.定义一个登录窗口--win,将loginPanel加入到登录窗口中;
            var win = new Ext.Window({
                title: "登录窗口",
                minimizable: true, //最小化   
                maximizable: true, //最大化   
                width: 240,
                height: 186,
                frame: true,
                items: [loginPanel],
                //4.在登录窗口中加入“确定”和“取消”,为“确定”按钮绑定登录验证函数CheckLogin
                buttons: [{ text: "确定", handler: CheckLogin }, { text: "取消"}]
            });

            //5.为登录窗口绑定一个最小化事件  
            win.minimize = function () {
                Ext.MessageBox.confirm("提示", "是否要最小化", minwindow);
                function minwindow(btn) {
                    if (btn == "yes") {
                        Ext.Msg.alert("提示", "确定最小化么", function () { alert("成功最小化"); });
                    }
                }
            }

            //6.定义一个登录成功弹出新窗口函数loginSuccess;  
            function loginSuccess() {
                var winLoginSuccess = new Ext.Window({
                    title: "登录成功后的窗口",
                    minimizable: true, //最小化   
                    maximizable: true, //最大化   
                    collapsible: true,
                    width: 550,
                    height: 550,
                    frame: true,
                    items: [{ xtype: "button", frame: true, text: "我是登录成功后窗口的一个按钮"}]
                });
                win.hide(); //登录窗口隐藏   
                winLoginSuccess.show(); //显示登录成功后的窗口   
            }

            win.show(); //显示窗口 
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
</body>
</html>

      后台Extjs一般处理程序的代码实现:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Demo
{
    /// <summary>
    /// Extjs 的摘要说明
    /// </summary>
    public class Extjs : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string userName = context.Request.QueryString["userName"];
            string userPass = context.Request.QueryString["passWord"];
            if (userName == "quwenzhe" && userPass == "123")
            {
                context.Response.Write("ok"); //假设验证成功则返回ok   
            }
            else
            {
                context.Response.Write("fail");//假设验证失败则返回fail   
            }
            context.Response.End();

        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

     代码的运行过程:当点击确定button后,会触发CheckLogin函数,CheckLogin通过Ajax将获取的数据传到Extjs一般处理程序进行检验,并获取Extjs一般处理程序的返回值。假设返回值是ok,则调用loginSuccess函数弹出新窗口;否则,则弹出登录失败的提示。

   执行代码后,登录页面效果图例如以下:

     

    登录成功后的效果图例如以下:

    

    到此,用Extjs实现的登录功能已经完毕。此外, 在学习过程中,发现自己存在浅尝辄止的问题,刚学会一点就以为自己明确了,希望大家能引以为戒,不要犯相同的错误。

    Ext是个非常好的框架,学好它在非常大程度上能帮助我们学习DWZ,希望大家能用心学习这块。

     

相关文章:

  • 文通移动文字识别采集终端(身份证识别,驾驶证识别,行驶证识别,护照识别,车牌识别)...
  • isFinite()
  • 线性判别分析LDA详解
  • Oracle RAC的日志体系
  • C# Distinct方法的使用笔记
  • Linux远程桌面
  • Java Se : Java NIO(服务端)与BIO(客户端)通信
  • 关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究...
  • SQL Server 2014 官方培训课件
  • 使用SSL证书保障网络游戏信息安全
  • vs2010 正式版官方下载地址
  • Python用subprocess的Popen来调用系统命令
  • gc overhead limit exceeded eclipse错误解决方式
  • 【错排问题】【HDU2048】神、上帝以及老天爷
  • 使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解
  • 【EOS】Cleos基础
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • Angularjs之国际化
  • CentOS6 编译安装 redis-3.2.3
  • Cookie 在前端中的实践
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Flannel解读
  • Java深入 - 深入理解Java集合
  • js面向对象
  • js中forEach回调同异步问题
  • nginx 配置多 域名 + 多 https
  • Spring核心 Bean的高级装配
  • Vue 重置组件到初始状态
  • 测试开发系类之接口自动化测试
  • 第十八天-企业应用架构模式-基本模式
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 京东美团研发面经
  • 聊聊hikari连接池的leakDetectionThreshold
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • # centos7下FFmpeg环境部署记录
  • #pragma预处理命令
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (简单) HDU 2612 Find a way,BFS。
  • (九十四)函数和二维数组
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十一)图像的罗伯特梯度锐化
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)JAVA中的堆栈
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?