ホームページ  >  記事  >  バックエンド開発  >  ASP.NET は HTML ページ要素のアクセス許可を制御します (2)

ASP.NET は HTML ページ要素のアクセス許可を制御します (2)

高洛峰
高洛峰オリジナル
2017-02-03 15:05:301337ブラウズ

これは、この権限制御の最初のステップです。スキャン インターフェイスは、権限を割り当てる要素の情報を取得し、データベースに保存します。

このステップは 3 つの小さなステップに分かれています:

(1) 権限を割り当てるインターフェイス上の要素をマークします

(2) 権限を割り当てる要素の情報を取得します。割り当てられました。 (ID、タイトル、上下関係)

(3).

1. 権限を割り当てるインターフェイスの要素にマークを付けます。

スキャンするとき、HTML 要素が多すぎて階層関係が多すぎるため、最初は難しく感じました。最初は、アクセス許可を割り当てる HTML 要素を表すために

タグを使用していましたが、たとえば、ユーザーの追加ボタンに DIV を追加すると、この解決策は機能しないことがわかりました。ボタンのスタイルが変更されるため、現在作業している KS システムのスタイルを調整する必要があります。さらに、現在のインターフェイスのスタイルが決定され、CSS も調整されています。 DIV を追加すると、インターフェイスを再調整する必要があります。この問題について 2 ~ 3 日考えましたが、最終的に HTML 要素のタグは次のとおりです。このタグに ID とタイトルを追加します: 。このタグを使用して、権限を割り当てる要素をマークします。このようにして、スタイルを変更せずに必要な情報を取得できます。変更後のインターフェースの背景コードは次のとおりです:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<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"></script> 
<script src="../../js/DIV/DIV.js"></script> 
<link href="../../css/admin.global.css" rel="stylesheet" type="text/css" /> 
<link href="../../css/admin.content.css" rel="stylesheet" type="text/css" /> 

<style type="text/css"> 
.btn-middle { 
width: 76px; 
} 
</style> 

</head> 
<body> 
<form id="Form" method="post" runat="server" > 
<%--box标记 main 开始标记--%> 
<box id="main" title="主要"> 
<div class="location">当前位置:用户管理 -> 查询用户</div> 

<div class="blank10"></div> 
<%--box标记 QueryUser 开始标记--%> 
<box id="QueryUser" title="查询用户"> 
<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"> 
<label class="first txt-green">用户名:</label> 
<input value="" type="text" name="username" id="username" class="input-small" /> 


<asp:LinkButton ID="lbtQuery" class="btn-lit" runat="server" 
OnClick="lbtQuery_Click" Width="58px"><span >查询</span></asp:LinkButton> 

<%--box标记 AddUser 开始标记--%> 
<box id="AddUser" title="添加用户"> 
<a class="btn-lit btn-middle" href="AdmAddUser.aspx"> 
<span>添加用户</span> 
</a> 
</box> 
<%--box标记 AddUser结束标记--%> 
</div> 
</div> 
</div> 
</div> 
</box> 
<%--box标记 QueryUser结束标记--%> 

<%--box标记 UserList开始标记--%> 
<box id="UserList" title="用户列表"> 
<span class="block"> 
<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="h"> 
<span class="icon-sprite icon-list"></span> 
<h3>用户列表</h3> 
</div> 
<div class="blank10"></div> 

<asp:Repeater ID="rpUserInfo" runat="server" onitemcommand="rpUserInfo_ItemCommand"> 
<HeaderTemplate> 
<table class="data-table history" id="mainTable" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<th scope="col">用户名称</th> 
<th scope="col">角色</th> 
<th scope="col">操作记录</th> 
<th scope="col">编辑</th> 
</tr> 
</HeaderTemplate> 
<ItemTemplate> 
<tr> 
<td class="txt160 c"><%#Eval("UserName")%></td> 
<td class="txt c"><%#Eval("RoleName")%></td> 
<td class="txt80 c"><a href="AdmOperatorRecord.aspx?UserId=<%#Eval("UserNo") %>" title="操作记录">操作记录</a></td> 
<td class="icon"> 
<%--box标记 EditUserInfo开始标记--%> 
<box id="EditUserInfo" title="编辑用户"> 
<a class="opt" title="编辑" href="AdmUpdateUser.aspx?UserId=<%#Eval("UserNo") %>"> 
<span class="icon-sprite icon-edit"> 
</span> 
</a> 
</box> 
<%--box标记 EditUserInfo结束标记--%> 
</td> 
</tr> 
</ItemTemplate> 
<FooterTemplate> 
</table> 
</FooterTemplate> 
</asp:Repeater> 
</div> 
</div> 
</span> 
<span id="spanFirst">第一页</span> <span id="spanPre">上一页</span> <span id="spanNext">下一页</span> <span id="spanLast">最后一页</span> 第<span id="spanPageNum"></span>页/共<span id="spanTotalPage"></span>页 
</box> 
<%--box标记 UserList 结束标记--%> 
</box> 
<%--box标记 main 结束标记--%> 
</form> 
</body> 
</html>

2. インターフェースをスキャンして、権限を割り当てる要素の情報を取得します。

インターフェースには許可要素を表す 要素があるため、スキャンするのは簡単ですが、それでも多くの問題が発生しましたが、最も困難だったのは 2 つをスキャンすることでした。 <ボックス間の親子関係>。以下は JS コードです:

$(document).ready(function () { 

var rootboxs = 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(&#39;text/xml&#39;); 
} 
} 
else if (window.ActiveXObject) { 
//IE5\IE6 
xmlhttp = new activeXObject("Microsoft.XMLHTTP"); 
} 
if (xmlhttp == null || xmlhttp == undefined) { 
alert("con&#39;t create XMLHttpRequest Object"); 
} 
//注册回调函数 
xmlhttp.onreadystatechange = callback; 
//发送信息 

xmlhttp.open(&#39;GET&#39;, &#39;../../Manager/RoleManager/AddBox.ashx?childboxId=&#39; + childboxId + &#39;&childboxTitle=&#39; + childboxTitle + &#39;&parentboxId=&#39; + parentboxId, 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) 

} 

}

3. データベースに保存します。

AJAX を使用してデータベースに保存すると、最初のデータがデータベースに挿入される前に、インターフェイスのスキャンに必要な時間が短すぎるため、最初に問題が発生しました。 2 番目のデータの情報の一部が 2 番目のレコードに置き換えられ、データベースに保存されているデータに問題が発生します。最初はJSで遅延を追加する予定でしたが、テーブル名が機能しませんでした。次に、プログラムのクラスにロックのようなものを追加し、保存されたデータが間違っていないように遅延としてカウントしました。 コードは次のとおりです。

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(); 
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 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; 
admDIVManager.AddDIV(EDiv); 
} 

public bool IsReusable 
{ 
get 
{ 
return false; 
} 
} 
} 
}

以下に示すように TreeView コントロールを使用して表示します。

ASP.NET は HTML ページ要素のアクセス許可を制御します (2)

HTML ページ要素の ASP.NET アクセス許可制御 (2) 関連記事の詳細については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。