【问题标题】:Set Visible property of div with an inline-tag使用 inline-tag 设置 div 的 Visible 属性
【发布时间】:2011-07-29 10:30:01
【问题描述】:

我正在尝试直接从页面中的代码通过调用后面代码中的函数来设置具有 runat='server' 属性的 div 的 Visible 属性,但似乎根本没有评估代码由服务器。 代码是这样的

<div id="mydiv" runat="server" Visible='<%# IsInRole("User") %>'>

其中 'IsInRole' 是页面上的受保护函数,返回布尔值。

非常感谢

找到解决方案:

<% if (IsInRole("Administrator")){%>
    <div id="mydiv">Admin content here</div>
<% }%>

【问题讨论】:

  • 如果人们可以发表评论,说明他们为什么对一个问题投反对票……尤其是当它是新人时,以及当它被写成在投反对票时这样做时……

标签: c# asp.net


【解决方案1】:

由于 div 是 runat="server",您应该能够从页面加载中类似这样的代码访问它:

mydiv.Visible = IsInRole(User);

(如果 IsInRole 返回真或假)

【讨论】:

  • 谢谢,但我不想对这个属性使用代码隐藏,因为当我需要更改 Role 变量的值时,我可以在不重新编译项目的情况下完成,只需在页面
  • asp.net 应用程序不需要编译。代码隐藏将在运行时自动编译@Edika
  • 这不是真的。需要在部署之前编译带有代码的 Web 应用程序。后面的代码被编译成与页面一起部署的程序集。 @Nitinjs
  • 是的,但是如果你使用的是 xcopy 则不需要编译
【解决方案2】:

<div id="mydiv" runat="server" Visible='<%# IsInRole("User") %>'>

# 表示一个数据绑定,它的内容只会在数据绑定完成的那一刻被评估。因此,首先,确保您的控件在页面执行期间是数据绑定的,其次,您的值在那个时候被正确评估。

否则你可能更喜欢

<div id="mydiv" runat="server" Visible='<%= IsInRole("User") %>'>

每次执行页面时都会评估您的 espression。

查看this blog了解更多详情

【讨论】:

  • 这在服务器标签中是不允许的,谢谢。我找到了替代解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
  • 2017-05-06
  • 1970-01-01
  • 2020-02-09
  • 2016-11-29
  • 2012-03-24
  • 2018-12-13
相关资源
最近更新 更多