Content 这适用于框架 4,但现在尝-6ren">
gpt4 book ai didi

asp.net - 在 Framework 3.5 中使用服务器标记 <%= %> 设置 Visible 属性

转载 作者:行者123 更新时间:2023-12-02 06:43:19 25 4
gpt4 key购买 nike

我一直在 .NET Framework 4 项目中使用 <%=whatever %> 等服务器标记来设置 runat="server"控件的可见性,如下所示:

  <div id="MyId" runat="server" visible="<%=MyVisiblePropertyOnCodeBehind %>" >
Content
</div>

这适用于框架 4,但现在尝试在框架 3.5 项目上使用它,它似乎不起作用。这是 Framework 4 独有的功能吗?是否有最酷的(和 .aspx 方面)替代方法来设置代码隐藏的可见性?我用的是丑陋的:

    MiId.Visible = MyVisiblePropertyOnCodeBehind

[编辑]解决方案:

感谢您的评论,让我了解我的问题和解决方案!

不止一件事是我的错。

在 VS2010 项目中我们使用 <%# 而不是 <%=

此外,我没有注意到在 VS2010 项目中我们使用的页面不是从“Page”继承的,而是从 CustomPage 类继承的,这会在我没有注意到的情况下自动进行绑定(bind),这让我认为是 Framework 4.0 独有的功能。

正如您在此处所述,如果您有以下标记:

  <div id="MyId" runat="server" visible="<%# MyVisiblePropertyOnCodeBehind %>" >
Content
</div>

您可以通过将以下内容添加到代码隐藏中来使其工作:

    public bool  MyVisiblePropertyOnCodeBehind = true;
protected void Page_Load(object sender, EventArgs e) {
DataBind();
// Or if you want only for one control, MyId.DataBind();
}

据我所知,这个 DataBind() 会降低应用程序的性能。你知道多少钱吗?这是否可以理解为用于大型项目的“专业”技术,或者您认为应该避免它?

我喜欢它使标记在单一 View 中可读且易于理解的方式,但我不想因此而对缓慢的代码感到内疚。

最佳答案

您发布的代码对于 ASP.NET 2.0 或 ASP.NET 4.0 运行时中的服务器标记来说不是有效的语法。在任一版本中,尝试使用 <%= ... %> 设置可见属性在服务器标记中应该会导致解析器错误:

Parser Error Message: Cannot create an object of type 'System.Boolean' from its string representation '<%=MyVisiblePropertyOnCodeBehind%>' for the 'Visible' property.

除了设置 Visible 之外,您还有两个选择代码隐藏中的属性或 <script runat="server">标签。第一个是在 Visible 上使用数据绑定(bind)。属性(property)。您需要调用DataBind() MyId 上的方法或其父控件之一以获取要绑定(bind)的值。

<div id="MyId" runat="server" visible="<%# MyVisiblePropertyOnCodeBehind %>" >
Content
</div>

另一种选择是编写如下代码:

<% if(MyVisiblePropertyOnCodeBehind) { %>
<div id="MyId" runat="server">
Content
</div>
<% } %>

此方法的缺点是您无法以编程方式将控件添加到包含代码块的页面或控件。如果您尝试这样做,您应该会收到错误:

The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>)

话虽如此,我认为按照现在的方式设置属性就是正确的方法。

关于asp.net - 在 Framework 3.5 中使用服务器标记 <%= %> 设置 Visible 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9595851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com