[C#.NET][User Control] 使用 IExtenderProvider 擴充控制項屬性 並 驗証控制項角色 (續)
2012-03-14 15:20
791 查看
續上篇,[C#.NET][User Control] 使用 IExtenderProvider 擴充控制項屬性 並 驗証控制項角色,IExtenderProvider 替我們擴充了控制項的屬性而增加了不少彈性,在上篇的例子裡,我僅為控制項定義一個角色,若要為每個控制項定義一個以上的角色存取權限,像下圖
這只是根據上篇做的一個變化,屬性由Enum變成Collection而已,卻花掉了我兩天的時間,眉眉角角還真多,我本來是用List<Pemission>來處裡
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
只要定義好每一個控制項的屬性後,在設計階段的Form,就會出現反射失敗的訊息,不知道該如何解決。
最後改用Pemission[]才得已解決,也花掉了我一天時間
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
在上一篇角色切換時有用到 Thread.CurrentPrincipal.IsInRole(),這篇就沒辦法用了,改用別的方法切換角色
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
來看一下執行效果
有框起來的有定義角色,程式一執行的時候就反白,其餘的則保留原來的樣子
按下Admin Login,這是用admin帳號登入
按下User Login,用user帳號登入
按下Power Login,用power帳號登入
上篇程式碼貼的亂七八糟的,連我自己都看的很亂,這種範例還是直接看專案比較快
Security.Form-1.zip
這只是根據上篇做的一個變化,屬性由Enum變成Collection而已,卻花掉了我兩天的時間,眉眉角角還真多,我本來是用List<Pemission>來處裡
public void SetPemission(Control Ctrl, List<Pemission> Pemissions) { //TODO: } public ReadOnlyCollection<Pemission> GetPemission(Control Ctrl) { //TODO: }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
只要定義好每一個控制項的屬性後,在設計階段的Form,就會出現反射失敗的訊息,不知道該如何解決。
最後改用Pemission[]才得已解決,也花掉了我一天時間
public void SetPemission(Control Ctrl, List<Pemission> Pemissions) { //TODO: } public ReadOnlyCollection<Pemission> GetPemission(Control Ctrl) { //TODO: }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
在上一篇角色切換時有用到 Thread.CurrentPrincipal.IsInRole(),這篇就沒辦法用了,改用別的方法切換角色
void login(string user) { this._Identity = new Identity(user); this._Principle = new Principle(_Identity); this.roleContainer1.SwitchRole(this._Identity); this.label1.Text = this._Principle.ToString(); }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
來看一下執行效果
有框起來的有定義角色,程式一執行的時候就反白,其餘的則保留原來的樣子
按下Admin Login,這是用admin帳號登入
按下User Login,用user帳號登入
按下Power Login,用power帳號登入
上篇程式碼貼的亂七八糟的,連我自己都看的很亂,這種範例還是直接看專案比較快
Security.Form-1.zip
相关文章推荐
- [C#.NET][User Control] 使用 IExtenderProvider 擴充控制項屬性 並 驗証控制項角色
- [c#.net]做tooltip给控件动态添加属性的做法、IExtenderProvider接口的使用
- c#.net]做tooltip给控件动态添加属性的做法、IExtenderProvider接口的使用
- c#.net]做tooltip给控件动态添加属性的做法、IExtenderProvider接口的使用
- [c#.net]做tooltip给控件动态添加属性的做法、IExtenderProvider接口的使用
- [C#.NET][VB.NET] 自訂控制項的集合屬性 /User Control of Collection Properties
- [ASP.NET MVC] 使用CLK.AspNet.Identity提供以角色为基础的访问控制(RBAC)
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 适合大型企业信息化应用使用的角色权限管理体系
- C#.NET解析XML(使用属性控制 XML 序列化)
- [C#.NET][VB.NET] 自訂控制項的自訂集合屬性 /User Control of Custom Collection Properties
- AjaxControltoolkit学习笔记—CollapsiblePanelExtender使用详解 (aps.net C#)
- C#.NET解析XML(使用属性控制 XML 序列化)
- C#.NET解析XML(使用属性控制 XML 序列化)
- vs2003 asp.net中直接输出wml,并利用C#做动态页面的控制,不使用微软的移动控件
- ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下
- C#.NET解析XML(使用属性控制 XML 序列化)
- C#.NET解析XML(使用属性控制 XML 序列化)
- Win server 2008安装Sql 2008提示必须使用角色管理工具安装或配置microsoft.net framework 3.5
- C#使用log4net
- 水晶报表技术(4)——C#.Net的WinForm中使用水晶报表