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

时间:2022-09-17 10:19:53

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

界面前台: 

复制代码代码如下:


<%@ 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="kudychen@gmail.com" /> 
<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;