ASP.NET对HTML页面元素进行权限控制(三)

  上一篇博客中有些没有考虑到的东西这次更改一下代码如下:

  界面前台:

  

复制代码 代码如下:

  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AdmShowDIV.aspx.cs" Inherits="ExamSystemV3.Manager.RoleManager.AdmShowDIV" %>

  <!DOCTYPE html>

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head runat="server">

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta name="Author" content="[email protected]" />

  <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

  <title></title>

  <script src="../../js/DIV/jquery.js" type="text/javascript"></script>

  <script src="../../js/DIV/DIV.js" type="text/ecmascript"></script>

  <link href="../../css/admin.global.css" rel="stylesheet" type="text/css" />

  <link href="../../css/admin.content.css" rel="stylesheet" type="text/css" />

  <script type="text/javascript" src="../../../js/jquery.easyui.min.js"></script>

  <script type="text/javascript" src="../../js/jquery-1.4.2.min.js"></script>

  <script type="text/javascript" src="../../js/jquery.utils.js"></script>

  <link href="../../jBox/Skins/Green/jbox.css" rel="stylesheet" type="text/css" />

  <script type="text/javascript" src="../../jBox/jquery.jBox-2.3.min.js"></script>

  <script type="text/javascript" src="../../js/admin.js"></script>

  <script type="text/javascript" src="../../js/SimpleTree.js"></script>

  </head>

  <body>

  <form id="form1" runat="server">

  <div class="container">

  <div class="location">当前位置:界面元素管理 -> 查看界面元素</div>

  <div class="blank10"></div>

  <div class="search block">

  <div class="h">

  <span class="icon-sprite icon-magnifier"></span>

  <h3>快速搜索</h3>

  </div>

  <div class="tl corner"></div><div class="tr corner"></div><div class="bl corner"></div><div class="br corner"></div>

  <div class="cnt-wp">

  <div class="cnt">

  <div class="search-bar" id="SelectRole">

  <label class="txt-green">请选择界面:</label>

  <asp:DropDownList ID="DdlWindowsName" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DdlWindowsName_SelectedIndexChanged">

  </asp:DropDownList>

  <a class="btn-lit" href="#" onclick="WindowsInfo()"><span>扫描界面信息</span></a>

  </div>

  </div>

  </div>

  </div>

  </div>

  <div class="block">

  <div class="h">

  <span class="icon-sprite icon-list"></span>

  <h3>界面详情</h3>

  </div>

  <div class="tl corner"></div>

  <div class="tr corner"></div>

  <div class="bl corner"></div>

  <div class="br corner"></div>

  <div class="cnt-wp">

  <div class="cnt">

  <iframe id="frmWindows" runat="server" frameborder="0" marginheight="0" marginwidth="0" scrolling="auto" style=" display: inline; height: 400px;" width="75%" ></iframe>

  <iframe id="frmUpdateDIV" runat="server" frameborder="0" marginheight="0" marginwidth="0" scrolling="auto" style="display: inline; height: 400px; width: 24%;"></iframe>

  </div>

  </div>

  </div>

  </form>

  </body>

  </html>

  界面后台:

  

复制代码 代码如下:

  using BLL.Manager.RoleUserManagerBLL;

  using System;

  using System.Collections.Generic;

  using System.Data;

  using System.Linq;

  using System.Web;

  using System.Web.UI;

  using System.Web.UI.WebControls;

  namespace ExamSystemV3.Manager.RoleManager

  {

  public partial class AdmShowDIV : System.Web.UI.Page

  {

  protected void Page_Load(object sender, EventArgs e)

  {

  string strLike="";

  if (!IsPostBack)

  {

  //绑定界面

  DataBindWindows(strLike);

  }

  }

  /// <summary>

  /// 绑定所有界面

  /// </summary>

  /// <param name="strLike"></param>

  public void DataBindWindows(string strLike)

  {

  DataTable dt = new DataTable();

  AdmWindowsManager admWindowsManager = new AdmWindowsManager();

  //查出所有的界面

  dt = admWindowsManager.QueryWindowInfo(strLike);

  //绑定界面信息

  DdlWindowsName.DataSource = dt;

  DdlWindowsName.DataValueField = "Id";

  DdlWindowsName.DataTextField = "WindowsName";

  DdlWindowsName.DataBind();

  }

  protected void DdlWindowsName_SelectedIndexChanged(object sender, EventArgs e)

  {

  DataTable dt = new DataTable();

  string strLike = "";

  AdmWindowsManager admWindowsManager = new AdmWindowsManager();

  //查出界面的信息

  dt = admWindowsManager.QueryWindowInfo(strLike);

  string strWindowsId=DdlWindowsName.SelectedValue.ToString().Trim();

  strLike = "Id='"+strWindowsId+"'";

  DataRow[] rows =dt.Select (strLike);

  //获得路径

  string strURL = rows[0]["WindowsURL"].ToString ();

  strURL = "../../" + strURL;

  frmWindows.Attributes["src"]=strURL;

  frmUpdateDIV.Attributes["src"] = "AdmUpdateDIV.aspx?WindowsID='" + strWindowsId + "'";

  }

  }

  }

  JS:

  

复制代码 代码如下:

  var WindowsID;

  function WindowsInfo() {

  //获取ifrm

  var frmWindows = document.getElementById("frmWindows").contentWindow;

  //获取界面ID

  WindowsID = document.getElementById("DdlWindowsName").value;

  var rootboxs = frmWindows.document.getElementById("main");

  var child = rootboxs.childNodes;

  findchildbox(child);

  };

  //搜寻子节点

  function findchildbox(parentNode) {

  for (var i = 0; i < parentNode.length; i++) {

  if (parentNode[i].nodeName == "BOX") {

  var childboxId = parentNode[i].id;

  var childboxTitle = encodeURI(parentNode[i].title);

  var parentbox = findparentbox(parentNode[i].parentNode);

  var parentboxId = parentbox.id;

  if (window.XMLHttpRequest) {

  //IE7 above,firefox,chrome^^

  xmlhttp = new XMLHttpRequest();

  //为了兼容部分Mozillar浏览器,当来自服务器响应开头不是xml,导致的无法响应问题

  if (xmlhttp.overrideMimeType) {

  xmlhttp.overrideMimeType('text/xml');

  }

  }

  else if (window.ActiveXObject) {

  //IE5\IE6

  xmlhttp = new activeXObject("Microsoft.XMLHTTP");

  }

  if (xmlhttp == null || xmlhttp == undefined) {

  alert("con't create XMLHttpRequest Object");

  }

  ////注册回调函数

  //xmlhttp.onreadystatechange = callback;

  //发送信息

  xmlhttp.open('GET', '../../Manager/RoleManager/AddBox.ashx?childboxId=' + childboxId + '&childboxTitle=' + childboxTitle + '&parentboxId=' + parentboxId+'&windowsId='+WindowsID, true);

  xmlhttp.send(null);

  //function callback() {

  // //判断交互是否完成,是否正确返回

  // if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

  // }

  //}

  }

  findchildbox(parentNode[i].childNodes)

  }

  }

  //查询父节点

  function findparentbox(child) {

  if (child.nodeName == "BOX") {

  return child;

  } else {

  return findparentbox(child.parentNode)

  }

  }

  一般处理程序:

  

复制代码 代码如下:

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Web;

  using BLL.Manager.RoleUserManagerBLL;

  using System.Data;

  using System.Text;

  using Model;

  using BLL;

  namespace ExamSystemV3.Manager.RoleManager

  {

  /// <summary>

  /// AddBox 的摘要说明

  /// </summary>

  public class AddBox : IHttpHandler

  {

  public void ProcessRequest(HttpContext context)

  {

  context.Response.ContentType = "text/plain";

  System.Threading.Thread.Sleep(1000);

  DIVEntity EDiv = new DIVEntity();

  TR_WindowsDIVEntity EWindowsDiv = new TR_WindowsDIVEntity();

  AdmDIVManager admDIVManager = new AdmDIVManager();

  PublicBLL publicBll = new PublicBLL();

  ///收集信息

  string strChildBoxId = "";

  string strChildBoxTitle = "";

  strChildBoxId = context.Request.QueryString["childboxId"].ToString().Trim();

  strChildBoxTitle = context.Server.UrlDecode(context.Request.QueryString["childboxTitle"].ToString().Trim());

  string strWindowsId = context.Request.QueryString["windowsId"].ToString().Trim();

  string strParentBoxId=context.Request.QueryString["parentboxId"].ToString ().Trim();;

  string strState = "是";

  string strDateTime = publicBll.GetDate();

  string strIP = publicBll.GetWebClientIp();

  string strOperator ="xvshu";//context.Session["UserNo"].ToString().Trim(); ;

  //给实体类赋值

  EDiv.Id = strChildBoxId;

  EDiv.MainRelation = strParentBoxId;

  EDiv.DIVName = strChildBoxTitle;

  EDiv.DIVDescribe = strChildBoxTitle;

  EDiv.Operator = strOperator;

  EDiv.OperatorIP = strIP;

  EDiv.State = strState;

  EDiv.DateTime = strDateTime;

  //给WindowsDIV实体类赋值

  EWindowsDiv.DIVID = strChildBoxId;

  EWindowsDiv.WindowsID = strWindowsId;

  EWindowsDiv.IsVisible = "是";

  EWindowsDiv.Operator = strOperator;

  EWindowsDiv.OperatorIP = strIP;

  EWindowsDiv.DateTime = strDateTime;

  //添加DIV

  admDIVManager.AddDIV(EDiv,EWindowsDiv);

  }

  public bool IsReusable

  {

  get

  {

  return false;

  }

  }

  }

  }