I have been working in a .NET Framework 4 project using server tags like <%=whatever %> to set the visibility of runat="server" controls, like the following:

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

这在Framework4上是有效的,但现在try 在Framework3.5项目上使用它似乎不起作用.这是Framework4独有的功能吗?除了从codebehind设置可见性,还有最酷的(和.aspx方面)替代方案吗?我用的是丑陋的:

    MiId.Visible = MyVisiblePropertyOnCodeBehind

提前谢谢你,

汤姆

[EDITED] SOLUTION:

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

不止一件事是我的错.

在VS2010项目中,我们使用了&lt;%#而不是&lt;%=

此外,我没有注意到在VS2010项目中,我们使用的页面不是从"Page"继承的,而是从CustomPage类继承的,这是自动进行绑定的,我没有注意到它,这让我认为这只是Framework4.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()会降低应用程序的性能.你知道多少钱吗?这可以理解为在大型项目中使用的"专业"技术吗?或者你认为应该避免这种做法吗?

我喜欢它使标记在单一视图中可读且易于理解的方式,但我不想因为代码太慢而感到内疚.

推荐答案

您发布的代码不是ASP.NET 2.0或ASP.NET 4.0运行时中服务器标记的有效语法.在任一版本中,try 在服务器标记中使用<%= ... %>设置Visible属性都会导致解析器错误:

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

除了在codebehind或<script runat="server">标记中设置Visible属性外,还有两个选项.第一种是在Visible属性上使用数据绑定.对于要绑定的值,需要在MyId或其父控件之一上调用DataBind()方法.

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

另一个选项是按如下方式编写代码:

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

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

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

尽管如此,我认为按照你现在的方式来设置房产才是正确的 Select .

Asp.net相关问答推荐

无法在Microsoft Windows Server 2016(数据中心)上运行.NET可移植性分析器

在 ASP.Net 中使用自定义 RoleProvider 时如何允许多个角色查看页面

如何在 C# 代码中获取当前项目名称?

/应用程序中的服务器错误. ASP.NET

如何防止 Azure 网站进入Hibernate 状态?

在 appSettings 中存储字符串数组?

无法获取项目引用的依赖项

如何在 FileUpload 控件中限制文件类型

跨子域共享 ASP.NET cookie

如何在 Kendo UI 中获取下拉列表中选定项目的文本?

IIS 中的 existingResponse="PassThrough" 是什么意思?

将通用列表绑定到转发器 - ASP.NET

.NET 上的 HTTP/2(HTTP2 或 SPDY)

使用 ASP.NET Web API 对 PUT 和 DELETE 的 CORS 支持

Azure Functions 中的 DI

MVC 模型布尔显示是或否

在.net的内存数据库中

如何从 ASP.NET Identity 获取用户列表?

获取 Application_Start 中的当前应用程序物理路径

Appdomain 回收究竟是什么