zoukankan      html  css  js  c++  java
  • 学用MVC4做网站六后台管理:6.1.3管理员修改密码

    6.1.3修改密码

    image

    需要两个action。一个是点击修改密码的链接要显示修改密码的分部视图(对话框形式);另一个是提交的处理action。

    1、打开【AdministratorController】添加返回分部视图[ChangePassWord()]action

    /// <summary>
            /// 修改密码
            /// </summary>
            /// <returns></returns>
            [AdminAuthorize]
            public PartialViewResult ChangePassWord()
            {
                return PartialView();
            }

    添加视图

    <div class="fs_wapper">
        @using (Html.BeginForm("ChangePassWord", "Administrator", FormMethod.Post, new { id = "admincha_form" }))
        {
            @Html.AntiForgeryToken()
            @Html.ValidationSummary()
            
            <table>
                <tr>
                    <th>原密码</th>
                    <td>
                        <input id="oldPwd" name="oldPwd" type="password" class="easyui-validatebox" data-options="required:true,validType:['length[6,256]']" />
                        </td>
                </tr>
                <tr>
                    <th>新密码</th>
                    <td>
                        <input id="newPwd" name="newPwd" type="password" class="easyui-validatebox" data-options="required:true,validType:['length[6,256]']" />
                        </td>
                </tr>
                <tr>
                    <th>重复密码</th>
                    <td>
                        <input id="confirmPwd" name="confirmPwd" type="password" class="easyui-validatebox" validType="equalTo['#newPwd']" />
                        </td>
                </tr>
            </table> 
        }
    </div>
    <div style="margin:20px;">
        <a href="javascript:void(0)" class="easyui-linkbutton" iconcls="icon-ok" onclick="AdminCPwdSave()">保存</a>
    </div>

    2、添加修改密码处理action[ChangePassWord(string oldPwd,string newPwd)],返回JsonData类型。

    [AdminAuthorize]
            [HttpPost]
            public JsonResult ChangePassWord(string oldPwd,string newPwd)
            {
                JsonData _jdata = new JsonData();
                if (ModelState.IsValid)
                {
                    var _admin = AdministratorController.AdminInfo;
                    if (_admin == null)
                    {
                        _jdata.Success = false;
                        _jdata.Msg = "登录已超时,请重新登录!";
                    }
                    else if (Common.Sha256(oldPwd) != _admin.PassWord)
                    {
                        _jdata.Success = false;
                        _jdata.Msg = "原密码错误!";
                    }
                    else
                    {
                        _admin.PassWord = Common.Sha256(newPwd);
                        if (adminRsy.Modify(_admin))
                        {
                            _jdata.Success = true;
                            _jdata.Msg = "保存成功√!";
                        }
                        else
                        {
                            _jdata.Success = false;
                            _jdata.Msg = "数据未能保存到数据库!";
                        }
                    }
                }
                else
                {
                    var _eItem = ModelState.Where(m => m.Value.Errors.Count > 0);
                    foreach (var i in _eItem)
                    {
                        _jdata.MsgLsit.Add(i.Key, "验证失败!");
                    }
                }
                return Json(_jdata);
            }

    3、打开Administrator.js添加两个函数,ShowChangePwdDlg(url)用户显示修改密码的对话框url就是对话框加载的视图url,AdminCPwdSave()用来进行提交的客户端处理。

    //显示修改密码窗口
    function ShowChangePwdDlg(url) {
        $(document.body).append("<div id='cPwdDlg'></div>");
        $('#cPwdDlg').dialog({
            title: "修改密码",
             480,
            height: 260,
            closed: false,
            cache: false,
            href: url,
            modal: true,
            onClose: function () { $(this).dialog("destroy"); }
        });
    }
    //修改密码保存
    function AdminCPwdSave() {
        $('#admincha_form').form('submit', {
            success: function (data) {
                
                var rt = jQuery.parseJSON(data);
                if (rt.Success) {
                    $.messager.alert("保存成功", rt.Msg, "", function () {
                        location.href = $("#btn_Logout").attr("href");
                        $("#cPwdDlg").dialog("destroy");
                        
                    });
                }
                else {
                    var msg = "";
                    if (rt.MsgLsit != undefined) {
                        $.each(rt.MsgLsit, function (i, val) {
                            msg += "<li>" + i + ":" + val + "</li>";
                        });
                    }
                    if (msg != "") msg = rt.Msg + "<br /> <p> 原因如下:" + "<ul>" + msg + "</ul></p>";
                    else msg = rt.Msg;
                    $.messager.alert("保存失败", msg, "error");
                }
            }
        });
    }

    image

    待续!

  • 相关阅读:
    JVM系列之:String.intern和stringTable
    一文了解JDK12 13 14 GC调优秘籍-附PDF下载
    JVM系列之:对象的锁状态和同步
    JVM系列之:Contend注解和false-sharing
    十分钟搭建自己的私有NuGet服务器-BaGet
    .Net Core in Docker极简入门(下篇)
    .Net Core in Docker极简入门(上篇)
    Flutter 实现酷炫的3D效果
    2020年20个Flutter最漂亮的UI库和项目
    Python 为什么能支持任意的真值判断?
  • 原文地址:https://www.cnblogs.com/mzwhj/p/3418674.html
Copyright © 2011-2022 走看看