16.远程加载修改页面,执行修改

================1.编辑:asp.net mvc 自带的加载数据的方式=====================================

1.远程加载修改页面

     请求方式显示下拉post,get,不能是显示1,2;

     操作方式下拉(0无操作,1easyui连接,2.打开新窗体)

     操作方式:1get,2post,3get和post.在权限验证里改()

 /// 2.3 判断当前用户 是否有 访问当前页面的权限
        /// </summary> 
        /// <param name="areaName"></param>
        /// <param name="controllerName"></param>
        /// <param name="actionName"></param>
        /// <param name="httpMethod"></param>
        /// <returns></returns>
        public bool HasPemission(string areaName, string controllerName, string actionName, string httpMethod)
        {
            var listP = from per in UsrPermission
                        where
                            string.Equals(per.pAreaName, areaName, StringComparison.CurrentCultureIgnoreCase) &&
                            string.Equals(per.pControllerName, controllerName, StringComparison.CurrentCultureIgnoreCase) &&
                            string.Equals(per.pActionName, actionName, StringComparison.CurrentCultureIgnoreCase) &&(
                                per.pFormMethod==3 ||//如果数据库保存的权限 请求方式 =3 代表允许 get/post请求
                                per.pFormMethod == (httpMethod.ToLower() == "get" ? 1 : 2)
                            )
                        select per;
            return listP.Count() > 0;
        } 

 

权限主页

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <title>123</title>
    <link href="~/EasyUI/themes/icon.css" rel="stylesheet" />
    <link href="~/EasyUI/themes/default/easyui.css" rel="stylesheet" />
    <script type="text/javascript" src="~/Scripts/jquery.min.js"></script>
    <script type="text/javascript" src="~/EasyUI/jquery.easyui.min.js"></script>
    <script type="text/javascript" src="~/Scripts/jquery.validate.min.js"></script>
    <script type="text/javascript" src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

    <script type="text/javascript">
        $(function () {
            $('#editWindow').window('close');//编辑默认关闭
           
            $("#tbList").datagrid({
                width: 'auto',
                height: 300,
                striped: true,
                singleSelect: true,
                url: '/admin/sys/GetPermData',//初始化加载权限数据
                queryParams:{},  
                loadMsg: '数据加载中请稍后……',
                pagination: true,
                rownumbers: true,
                columns: [[
                    { field: 'pid', title: 'ID', width: 100, align: "center" },
                    { field: 'pName', title: '权限名', width: 100, align: "center" },
                    { field: 'pAreaName', title: '区域名', width: 100, align: "center" },
                    { field: 'pControllerName', title: '控制名', width: 100, align: "center" },
                    { field: 'pActionName', title: 'Action', width: 100, align: "center" },
                    {
                        field: 'pFormMethod', title: '请求方式', width: 100, align: "center", formatter: function (value) {
                            return value == "1" ? "Get" : "post";
                        }
                    },
                    { field: 'pOperationType', title: '操作类型', width: 100, align: "center" }
                ]],
                toolbar: [{
                    iconCls: 'icon-edit',
                    text:"编辑",
                    handler: editRow
                }, '-', {
                    iconCls: 'icon-add',
                    text: "新增",
                    handler: function () { alert('新增按钮3') }
                }],
               //1.设置选中行
                onSelect: function (rowI, rD) {
                   
                    selectRowIndex = rowI;//1.1将中的行设置为全局变量 设置给全局变量
                }
            });
            initModifyForm();
        })
     
        //1.将中的行设置为全局变量
        var selectRowIndex = -1;
        //编辑按钮方法
        function editRow() {
            //1.获取选中行里的数据!
            var rowData = $("#tbList").datagrid("getSelected");//getSelected返回一个选中的行
            
            $('#editWindow').window('open');//打开
            //load发送异步请求权限修改页面。并直接加载到 当前的 修改窗体中
//:
/admin/sys/EditPermission/:区域/控制器/action方法
 $("#editWindow").load("/admin/sys/EditPermission/" + rowData.pid, null, function () {//修改实体的pid,pid是权限id,传到修改方法

            });
        }
      
    </script>
</head>
<body>
    <table id="tbList" style="width:400px;height:250px">

    </table>
    <div id="editWindow" class="easyui-window" title="用户权限编辑" style="width:600px;height:400px;" resizable="true" data-options="iconCls:'icon-save',modal:true">//编辑div
   
      </div>
</body>
</html>

 

EditPermission(权限编辑action方法)

@model MODEL.ViewModel.Permission     //修改扩展实体

<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<style type="text/css">
    #TextBoxFor{width:400px;border:1px solid #0094ff;margin:10px auto;}
     #TextBoxFor td, #TextBoxFor th{border:1px solid #ffffff;padding:0px;}
</style>

@using (Html.BeginForm()) { 
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)
   
        <table id="TextBoxFor">

            <tr>
                <td >@Html.HiddenFor(model => model.pid)</td>@*//权限id*@
                
            </tr>
            <tr>
                <td>@Html.LabelFor(model => model.pParent)</td>
                <td >@Html.TextBoxFor(model => model.pParent)</td>
                <td>@Html.ValidationMessageFor(model => model.pParent)</td>
            </tr>
            <tr>
                <td >@Html.LabelFor(model => model.pName)</td>
                <td>@Html.TextBoxFor(model => model.pName)</td>
                <td >@Html.ValidationMessageFor(model => model.pName)</td>
            </tr>
            <tr>
                <td >@Html.LabelFor(model => model.pAreaName)</td>
                <td >@Html.TextBoxFor(model => model.pAreaName)</td>
                <td >@Html.ValidationMessageFor(model => model.pAreaName)</td>
            </tr>
            <tr>
                <td >@Html.LabelFor(model => model.pControllerName)</td>
                <td >@Html.TextBoxFor(model => model.pControllerName)</td>
                <td >@Html.ValidationMessageFor(model => model.pControllerName)</td>
            </tr>
            <tr>
                <td >@Html.LabelFor(model => model.pActionName)</td>
                <td >@Html.TextBoxFor(model => model.pActionName)</td>
                <td >@Html.ValidationMessageFor(model => model.pActionName)</td>
            </tr>
            <tr>
                <td >@Html.LabelFor(model => model.pFormMethod)</td>  
                <td >@Html.DropDownListFor(model => model.pFormMethod, ViewBag.httpMethopList as IEnumerable<SelectListItem>)</td>//请求方式下拉框数据
                
            </tr>
            <tr>
                <td>@Html.LabelFor(model => model.pOperationType)</td>   
                <td>@Html.DropDownListFor(model => model.pOperationType, ViewBag.OperationTypeList as IEnumerable<SelectListItem>)</td>//操作方式下拉框数据
            </tr>
            <tr>
                <td >@Html.LabelFor(model => model.pOrder)</td>
                <td>@Html.TextBoxFor(model => model.pOrder)</td>
                <td >@Html.ValidationMessageFor(model => model.pOrder)</td>
            </tr>
            <tr>
                <td>@Html.LabelFor(model => model.pIsShow)</td>
                <td>@Html.TextBoxFor(model => model.pIsShow)</td>
                <td>@Html.ValidationMessageFor(model => model.pIsShow)</td>
            </tr>
           
            <tr>
                <td >@Html.LabelFor(model => model.pRemark)</td>
                <td>@Html.TextBoxFor(model => model.pRemark)</td>
                <td >@Html.ValidationMessageFor(model => model.pRemark)</td>
            </tr>
            <tr>
                <td><input type="submit" value="保存" /></td>
            </tr>
      </table>
}  

EditPermission

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using MVCOA.Helper;

namespace MVCOA.Login.Admin
{
    /// <summary>
    /// 系统管理
    /// </summary>
    public class SysController : Controller
    {
        #region 1.0 权限列表 视图 +Permission()
        [HttpGet]
        /// <summary>
        /// 权限列表 视图
        /// </summary>
        /// <returns></returns>
        public ActionResult Permission()
        {
            return View();
        } 
        #endregion

        #region 1.1 权限列表 数据 +Permission()
        [HttpPost]
        /// <summary>
        /// 权限列表 视图
        /// </summary>
        /// <returns></returns>
        public ActionResult GetPermData()
        {
            //1 查询数据
            var list = OperateContext.Current.BLLSession.IOu_PermissionBLL.GetListBy(p => p.pIsDel == false).Select(p=>p.ToPOCO());
            //2 生成规定格式的 json字符串发回 给 异步对象
            //return OperateContext.Current.RedirectAjax("ok", "加载成功~", list, "");
            MODEL.EasyUIModel.DataGridModel dgModel = new MODEL.EasyUIModel.DataGridModel()
            {
                total = list.Count(),
                rows = list,
                footer = null
            };
            return Json(dgModel);
        }
        #endregion

        #region 1.2加载 权限修改 窗体html
        [HttpGet]
        /// <summary>
        /// 1.2加载 权限修改 数据
        /// </summary>
        /// <returns></returns>
        public ActionResult EditPermission(int id)//这个是留有
        {
           var listt= OperateContext.Current.BLLSession.IOu_PermissionBLL.GetListBy(c => c.pid == id).FirstOrDefault().ToViewModel();
           //准备请求方式下拉框数据
            ViewBag.httpMethopList = new List<SelectListItem>() { 
               new SelectListItem(){Text="Get",Value="1"},
                new SelectListItem(){Text="Post",Value="2"}
           };
            //操作方式下拉框数据
            ViewBag.OperationTypeList = new List<SelectListItem>() { 
               new SelectListItem(){Text="无操作",Value="0"},
                new SelectListItem(){Text="eastyui连接",Value="1"},
                  new SelectListItem(){Text="打开新窗体",Value="2"}
           };
            return PartialView(listt);
        } 
        #endregion
       
        //#endregion

        #region 1.2 权限修改 +EditPermission(MODEL.ViewModel.Permission model)
        [HttpPost]
        /// <summary>
        /// 1.2 权限修改
        /// </summary>
        /// <returns></returns>
        public ActionResult EditPermission(MODEL.Ou_Permission model)
        {
            int res = OperateContext.Current.BLLSession.IOu_PermissionBLL.Modify(model, "pName", "pAreaName", "pControllerName", "pActionName", "pFormMethod", "pOperationType", "pOrder", "pIsShow", "pRemark");

            if (res > 0)
                return Redirect("/admin/sys/Permission?ok");
                
            else
                return Redirect("/admin/sys/Permission?err");
        }
        #endregion
    }
}

 asp.net mvc完成了修改功能。

=======================2.编辑:使用easyui的ajax方式提交======================================

 权限编辑页

     属性:自动适应

       表格宽度如何自适应:easyUI中的datagrid有一个属性fitColumns,把它设为true就会自动适应宽度(无滚动条)

       修改步骤:1.开启验证,viewMode.Permission模型里面添加特性。如[DisplayName("区域名")] 显示名称; [Required]必填项;

                         2.点击编辑发送一个异步请求from表单: $("#modfiy").load("/admin/sys/EditPermission/" + rowData.pid, null, function (){});

                         3.点击编辑的时候editWindow窗体中的编辑*<form id="modfiy" method="post">这个表单是可以不要的;直接编辑editWindow窗体,load异步的请求editWindow页面:                         $("#editWindow").load("/admin/sys/EditPermission/" +  rowData.pid, null, function () {//修改实体的pid,pid是权限id,传到修改方法

                                   });

                        4.EditPermission.cshtml生成各种组框,发回到load,加载到editWindow编辑窗体上。 index权限树加载完成后,树上添加

                                      /*返回一个iframe标签*/
                                         function newIframe(url)
                                              {
                                      var ifrStr = "<iframe src='" + url + "' style='width:100%;height:100%;border:1px solid #000;'></iframe>";
                                 return ifrStr;
                                 }

                       5.点击编辑,打开权限编辑窗体;窗体上属性,已经有一个表单;如:<form action="/admin/sys/editpermission/5" method="post">

 

                       6.  表单是什么时间加进来的?

                                    当异步请求加载过来的时候,异步请求之前jquey文件已经执行完了,也就是说Permission.cshtml页面在加载的时候,里面还没表单;

                                     点击按钮异步的加载的表单,才会放到:<div id="editWindow" class="easyui-window" title="用户权限编 style="width:600px;height:400px;"                                 resizable="true" data-options="iconCls:'icon-save',modal:true"> </div>

                         所以编辑editPermission.cshtml验证重新导一次<script type="text/javascript" src="~/Scripts/jquery.min.js"></script>

                                  <script src="~/Scripts/jquery.validate.min.js"></script>

                                 <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

              7.如果permission页, lond远程加载 权限编辑EditPermission页,如果重新  加载<script type="text/javascript" src="~/Scripts/jquery.min.js"></script>这个jquery.min会把之前                              的覆盖掉,就没有了easyui插件。就是失去easyui功能,窗口就会只能打开一次。所以不能重新导jquery.min这个文件。

               8.所以把permission页验证的注释掉或删除:

                                  <script src="~/Scripts/jquery.validate.min.js"></script>

                                 <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

              工具:在工具中看验证加载

                            

                                  

posted @ 2017-04-04 01:27  狼牙者.net  阅读(350)  评论(0编辑  收藏  举报