zoukankan      html  css  js  c++  java
  • 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,
                     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, //最大化   
                     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,
                         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,希望大家能用心学习这块。

         

  • 相关阅读:
    函数式编程中的基本概念
    【VS】Visual Studio 就可以反编译查看源码了,再见了 Reflector
    【C#】CsvHelper 使用手册
    【C#】使用 System.Globalization.DateTimeFormatInfo 屏蔽系统时间格式对代码的影响
    【swagger】C# 中 swagger 的使用及避坑
    【C#】Newtonsoft.Json 中 JArray 添加数组报错:Could not determine JSON object type for type 'xxx'
    【C#】比较 Random 与 RandomNumberGenerator 生成随机字符串
    【C#】正则进阶
    【C#】写文件时如何去掉编码前缀
    【C#】定时器保活机制引起的内存泄露问题
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4007016.html
Copyright © 2011-2022 走看看