当前位置:  开发笔记 > 后端 > 正文

将按钮的可见属性分配给静态方法结果

如何解决《将按钮的可见属性分配给静态方法结果》经验,为你挑选了3个好方法。

我试图使用以下代码基于用户的角色隐藏按钮:

 

但是,当我运行上面的代码时,我收到以下错误消息:

无法从其字符串表示形式'<%= WebApplication1.SiteHelper.IsUserInRole("Admin")%>'为'Visible'创建'System.Boolean'类型的对象



1> Tom Jelen..:

一种有趣的问题..但是正如错误消息所述,字符串<%= WebApplication1.SiteHelper.IsUserInRole("Admin") %>无法转换为布尔值.

不幸的是,我无法解释为什么表达式没有被评估,而是被视为字符串.

你的<%# %>表达式按预期工作的原因是因为它的处理方式有很大不同.将Page编译成类时,编译器会创建一个类似于此的事件处理程序:

public void __DataBindingButton2(object sender, EventArgs e)
{
    Button button = (Button) sender;
    Page bindingContainer = (Page) button.BindingContainer;
    button.Visible = HttpContext.Current.User.IsInRole("admin");
}

并将此方法挂钩到控件上的Control.Databinding事件.正如您所看到的,这次<%# %>被正确地视为服务器代码,而不仅仅是随机字符串.

所以我想解决方案是使用数据绑定,或者像AndreasKnudsen所建议的那样转向代码隐藏.



2> 小智..:

作为替代解决方案:

<% if (WebApplication1.SiteHelper.IsUserInRole("Admin"))
    {%>
         
<%} %>



3> azamsharp..:

以下代码有效:

Visible='<%# WebApplication1.SiteHelper.IsUserInRole("Admin") %>'

注意,aboe使用绑定​​表达式!

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有