基于角色的启用/禁用asp.net中的控件
目前我正在开发一个项目,其中有四个角色的用户可以访问相同的页面(有很多页面,每个页面有近80-90个控件:().
要求是,根据每个角色,用户应该能够查看每个页面中的特定控件(即,一个角色可见的控件不需要对其他角色可见). 任何人都可以给我最好的方法,这将是强大的,维护良好的代码.(jQuery,Javascript解决方案也将做..) 解决方法
这是去年点击我心中的一个非常好的问题..这是我提出的,它有点冗长,但我希望这可以帮助..
首先,你必须看看Asp.net中的ControlAdapters. http://www.asp.net/cssadapters/WhitePaper.aspx 概述: 在asp.net页面尝试这样的事情 <asp:TextBox ID="TextBox1" runat="server" CRAN="1"></asp:TextBox> 这里CRAN是我的自定义属性,1是可以在页面上访问此控件的roleid. 现在是时候创建一个控制适配器,它将根据角色启用/禁用此控件. public class TextBoxAdapter: System.Web.UI.WebControls.Adapters.WebControlAdapter { protected override void OnLoad(EventArgs e) { if (this.Page is ISecurable) { WebControl tb = this.Control as WebControl; string roles = tb.Attributes[Constants.ControlRoleAttributeName]; bool result = true; if (!string.IsNullOrEmpty(roles)) { result = false; string[] role = roles.Split(','); foreach (string r in role) { if (Roles.IsUserInRole(r)) { result = true; } } } tb.Enabled = result; //tb.BackColor = Color.Red; } base.OnLoad(e); } } 这是我创建的控件适配器,它将根据角色启用/禁用控件.你可以修改这个显示/隐藏控件. 您必须在.browser文件中的asp.net的App_Browser文件夹中注册此控件适配器 <browsers> <browser refID="Default"> <controlAdapters> <adapter controlType ="System.Web.UI.WebControls.TextBox" adapterType="MyProject.ControlAdapter.TextBoxAdapter" /> </controlAdapters> </browser> </browsers> 结论: 问候. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 将App_Start更改为AppStart
- asp.net – 编程控制输出缓存 – 根据参数值禁用或启用缓存
- asp.net-mvc – 如何为其模型调用“null”的局部视图?
- 有人创建安装程序来部署内部asp.net Web应用程序吗?
- asp.net-mvc – 如何使用ASP.NET MVC 2验证复杂模型
- 即使通过自定义服务器端验证仍然触发ASP.NET按钮单击事件也
- asp.net-mvc-4 – 未找到入口点异常
- asp.net-web-api – WebApi 2超出最大请求长度
- asp.net-mvc – 编写单元测试以验证所有ASP.NET MVC控制器是
- asp.net – gzip压缩在Windows Azure网站
- asp.net-mvc – 在C#中,我如何从一个字节[]中知道
- asp.net-mvc – 错误2002:MetadataWorkspace中不
- asp.net – 如何将转发器中Item的客户端ID传递给
- 在ASP.NET MVC 3中更改Membership.ValidateUser(
- asp.net-mvc – mvc将多个参数传递给局部视图
- asp.net-mvc-4 – 使用angularjs和ASP.NET MVC
- 实体框架 – 实体框架核心更新许多对许多
- 在ASP.NET 5项目中运行NUnit测试(在VS Test Expl
- 在ASP.NET MVC 6中继续支持Ninject?
- WPF的Page介绍及Page Window Frame 之间的链接使