學用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: "修改密碼",
        width: 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

待續!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM