国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

ASP.NET對HTML頁面元素進(jìn)行權(quán)限控制(二)

2020-03-24 15:56:23
字體:
供稿:網(wǎng)友
這是這個權(quán)限控制的第一步,掃描界面把要分配權(quán)限的元素的信息獲取出來存入到數(shù)據(jù)庫中。

這一步分三小步:

(1).標(biāo)出界面所要分配權(quán)限的元素

(2).掃描界面獲取所要分配權(quán)限的元素信息。(ID,標(biāo)題,層級關(guān)系)

(3).存入數(shù)據(jù)庫中。

1.標(biāo)出界面所要分配權(quán)限的元素.

在掃描的時候一開始我覺得很難因為html' target='_blank'>HTML元素過多又有很多層級關(guān)系。一開始用的是 div 標(biāo)簽來表示HTML所要分配權(quán)限的元素,發(fā)現(xiàn)這個方案不行,比如把添加用戶按鈕加上DIV那么這個按鈕的樣式就變了還得調(diào)樣式我現(xiàn)在做的KS系統(tǒng)有將近100個界面,再加上現(xiàn)在的界面已經(jīng)確定好樣式,調(diào)好CSS,加上再加上DIV的話那么得重新調(diào)界面,就這個問題想了兩三天,最后我想到要不自定義一個HTML元素標(biāo)簽為: box /box 為這個標(biāo)簽加上ID和Title為: box id="AddID" Title=“添加按鈕” /box ,用這個標(biāo)簽來標(biāo)記所要分配權(quán)限的元素。這樣的話既不用更改樣式又能獲取到所要的信息。更改之后的界面后臺代碼為:
復(fù)制代碼 代碼如下:
!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標(biāo)記 main 開始標(biāo)記--%
box id="main" title="主要"
div 當(dāng)前位置:用戶管理 - 查詢用戶 /div

div /div
%--box標(biāo)記 QueryUser 開始標(biāo)記--%
box id="QueryUser" title="查詢用戶"
div
div
span /span
h3 快速搜索 /h3
/div
div /div
div /div
div /div
div /div
div
div
div
label 用戶名: /label
input value="" type="text" name="username" id="username" /


asp:LinkButton ID="lbtQuery" runat="server"
Width="58px" span 查詢 /span /asp:LinkButton

%--box標(biāo)記 AddUser 開始標(biāo)記--%
box id="AddUser" title="添加用戶"
a href="AdmAddUser.aspx"
span 添加用戶 /span
/a
/box
%--box標(biāo)記 AddUser結(jié)束標(biāo)記--%
/div
/div
/div
/div
/box
%--box標(biāo)記 QueryUser結(jié)束標(biāo)記--%

%--box標(biāo)記 UserList開始標(biāo)記--%
box id="UserList" title="用戶列表"
span
div /div
div /div
div /div
div /div
div
div
div
span /span
h3 用戶列表 /h3
/div
div /div

asp:Repeater ID="rpUserInfo" runat="server" onitemcommand="rpUserInfo_ItemCommand"
HeaderTemplate
table 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 %#Eval("UserName")% /td
td %#Eval("RoleName")% /td
td a href="AdmOperatorRecord.aspx?UserId= %#Eval("UserNo") % " title="操作記錄" 操作記錄 /a /td
td
%--box標(biāo)記 EditUserInfo開始標(biāo)記--%
box id="EditUserInfo" title="編輯用戶"
a title="編輯" href="AdmUpdateUser.aspx?UserId= %#Eval("UserNo") % "
span
/span
/a
/box
%--box標(biāo)記 EditUserInfo結(jié)束標(biāo)記--%
/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標(biāo)記 UserList 結(jié)束標(biāo)記--%
/box
%--box標(biāo)記 main 結(jié)束標(biāo)記--%
/form
/body
/html


2.掃描界面獲取所要分配權(quán)限的元素信息。

由于界面上有了 box 這個元素來表示權(quán)限的元素,這樣掃描起來就好一些了不過還是遇到了不少的問題,最終還是解決了,最難的是掃描出兩個 box 之間的父子關(guān)系。下面是JS代碼:
復(fù)制代碼 代碼如下:
$(document).ready(function () {

var rootboxs = document.getElementById("main");
var child = rootboxs.childNodes;
findchildbox(child)


});
//搜尋子節(jié)點
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瀏覽器,當(dāng)來自服務(wù)器響應(yīng)開頭不是xml,導(dǎo)致的無法響應(yīng)問題
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");
}
//注冊回調(diào)函數(shù)
xmlhttp.onreadystatechange = callback;
//發(fā)送信息

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


function callback() {
//判斷交互是否完成,是否正確返回
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

}
}

}

findchildbox(parentNode[i].childNodes)

}

}

//查詢父節(jié)點
function findparentbox(child) {

if (child.nodeName == "BOX") {
return child;
} else {
return findparentbox(child.parentNode)

}

}

3.存入數(shù)據(jù)庫中。

利用AJAX存入到數(shù)據(jù)庫中,一開始就遇到了問題,因為掃描界面所需要的時間太短在還沒有把第一條數(shù)據(jù)插入到數(shù)據(jù)庫的時候第二條數(shù)據(jù)就來了這樣導(dǎo)致了第一條數(shù)據(jù)的部分信息就會被第二條記錄替代了導(dǎo)致存入數(shù)據(jù)庫的數(shù)據(jù)出現(xiàn)了問題。一開始我是打算在JS那里加上個延遲,結(jié)果表名不行。然后我就在一班程序里面加入一個類似鎖的一個東西,算作延遲吧這樣存入的數(shù)據(jù)就不會錯誤了下面是代碼:
復(fù)制代碼 代碼如下:
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控件顯示出來如下圖:
更多編程語言

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 公安县| 同江市| 桐柏县| 新建县| 绥宁县| 通海县| 华池县| 湘阴县| 定远县| 边坝县| 外汇| 绥宁县| 自治县| 额尔古纳市| 南丹县| 新安县| 偏关县| 皮山县| 彰化市| 马公市| 华池县| 双江| 舞阳县| 文水县| 望江县| 东乌| 普兰店市| 海门市| 阿图什市| 北碚区| 武鸣县| 北京市| 黄梅县| 岱山县| 松原市| 视频| 金堂县| 扶余县| 新沂市| 外汇| 虹口区|