【问题标题】:"Code blocks are not supported in this context" error in ASP.NETASP.NET 中的“此上下文中不支持代码块”错误
【发布时间】:2025-12-03 22:20:31
【问题描述】:

我只是尝试在 ASP.NET 标记中插入一些 VB.NET 代码而收到此错误。见代码:

<%@ Control Inherits="PerformanceWeb.Framework.SiteSettings" CodeBehind="sitesettings.ascx.vb" language="vb" AutoEventWireup="false" %>

<table id="TABLE1" cellSpacing="0" cellPadding="2" border="0" runat="server">
<% If EditDowntimeMode Then%>

    <tr><td class="Normal"><asp:label id="lblDowntimeLegacyMode" Runat="server">lblDowntimeLegacyMode</asp:label></td></tr>

    <tr>
        <td class="DowntimeLegacyModeIndented" width="130">
            <asp:label id="lblLegacyMode" Runat="server">lblLegacyMode</asp:label>
        </td>
        <td class="Normal" colSpan="2">
            <asp:RadioButton id="rdoLegacyMode" GroupName="DowntimeLegacyMode" Runat="server"></asp:RadioButton>
        </td>
    </tr>
    <tr>
        <td class="DowntimeLegacyModeIndented" width="130">
            <asp:label id="lblNewCauses" Runat="server">lblNewCauses</asp:label>
        </td>
        <td class="Normal" colSpan="2">
            <asp:RadioButton id="rdoNewCauses" GroupName="DowntimeLegacyMode" Runat="server"></asp:RadioButton>
        </td>
    </tr>

    <tr>
        <td colspan="2"><hr /></td>
    </tr>

<% End if%>
</table>

代码隐藏

#Region "Properties"
        Public Property EditDowntimeMode() As Boolean
            Get
                Return m_EditDowntimeMode
            End Get
            Set(ByVal value As Boolean)
                m_EditDowntimeMode = value
            End Set
        End Property

#End Region

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    当您将runat='server' 添加到 HTML 控件时,您会更改呈现,并且内部不支持代码块。

    更改自:

    <table id="TABLE1" cellSpacing="0" cellPadding="2" border="0" runat="server">
    

    到:

    <table id="TABLE1" cellSpacing="0" cellPadding="2" border="0">
    

    【讨论】:

      【解决方案2】:

      在页面加载后面的代码中,您不能将表格的可见属性设置为 EditDowntimeMode 的否定吗?这似乎是一个比在你正在做的事情中尝试将所有标记混合在一起更好的解决方案。

      后面代码的Page_Load方法中是这样的:

      Table1.Visible = Not EditDowntimeMode
      

      如果是这种情况,则应更新问题中给定的示例代码,因为示例代码的 if 会阻止表中的所有内容。您可以使用 ASP:Panel 块并控制其对另一个想法的可见性,或者可能嵌套表,以便内部表可能正是“EditDowntimeMode”将显示在其自己的表中的内容。

      【讨论】:

      • 不能这样做,因为表格中还有其他内容需要显示。