Jquery 基于CssClass启用或禁用ASP.NET WebForms控件
我想基于CssClass启用或禁用ASP.NET控件,例如,我在ASP.NET页面中为一个按钮设置了insert CssClass,并检查用户是否有权限执行insert。如果用户有权限,我将启用该按钮,如果没有权限,我将禁用该按钮 请注意,我想写适用于DRY的逻辑,我不想在每一页中都写代码 我脑海中有两种情景: 1-使用C选择代码隐藏中的控件,但我有一个困难,我使用的是基类方法Web.UI.Page->BaseClass->MasterPage->Page I user下面的代码段,它总是返回null this.controls.OfType.Wherei=>I.CssClass==insert,因为这将只选择基类中的控件 2-Create WebMethod从代码隐藏中选择权限,并使用jQuery按类选择元素,并根据权限启用或禁用它们Jquery 基于CssClass启用或禁用ASP.NET WebForms控件,jquery,asp.net,webforms,Jquery,Asp.net,Webforms,我想基于CssClass启用或禁用ASP.NET控件,例如,我在ASP.NET页面中为一个按钮设置了insert CssClass,并检查用户是否有权限执行insert。如果用户有权限,我将启用该按钮,如果没有权限,我将禁用该按钮 请注意,我想写适用于DRY的逻辑,我不想在每一页中都写代码 我脑海中有两种情景: 1-使用C选择代码隐藏中的控件,但我有一个困难,我使用的是基类方法Web.UI.Page->BaseClass->MasterPage->Page I user下面的代码段,它总是返回n
请告诉我你的意见,如果有什么问题请告诉我 如果您希望必须使用它们的CssClass属性隐藏它们,那么最好在服务器上,在基类中这样做,如场景1所述。但是,请记住,此.Controls在控件树中仅位于下一层。如果希望包含所有控件,则需要递归扫描控件树。为了在动态内容(如ListView中生成的ItemTemplates等)上实现这一点,您需要确保在所有内容都呈现后执行此操作 不建议在客户端上执行此操作,因为恶意用户只需打开开发工具并再次显示insert按钮并不困难
但您可能应该考虑CSsCype属性的目的。它并不真正适合你正在尝试做的事情;它实际上是为了应用样式
如果您使用ASP.NET的成员资格提供程序及其角色提供程序,则可以使用来限制呈现,如下所示:<asp:LoginView runat="server">
<RoleGroups>
<asp:RoleGroup Roles="CanInsert"> <!--Roles can be anything-->
<ContentTemplate>
<!--Insert button or w/e here-->
</ContentTemplate>
</asp:RoleGroup>
</RoleGroups>
</asp:LoginView>
如果您不使用内置的会员资格提供商,滚动您自己的LoginView并不是特别困难,它使事情变得非常枯燥,但很容易更改如果您想从服务器端执行此操作,您有很多方法可以做到这一点 1-创建2个css类,一个用于隐藏,另一个用于显示,然后在页面加载时更改控件的css *-当您在页面加载时更改csscalass属性时,因为呈现的所有控件都为cssclass选择了perperperty 对于您的问题,您可以从contentplaceholder的分层表单中找到控件
但是每次加载页面时,你都可以在母版页上隐藏你的控制密码权限我没有使用内置的会员资格提供商,我已经完成了第1个场景,它正在工作,谢谢@Christoff Mansfield