Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 基于CssClass启用或禁用ASP.NET WebForms控件_Jquery_Asp.net_Webforms - Fatal编程技术网

Jquery 基于CssClass启用或禁用ASP.NET WebForms控件

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启用或禁用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按类选择元素,并根据权限启用或禁用它们


请告诉我你的意见,如果有什么问题请告诉我

如果您希望必须使用它们的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