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>
工具:在工具中看验证加载