“ASP.NET中不支持此上下文中的代码块”错误

时间:2011-06-20 15:09:18

标签: asp.net vb.net

我通过简单地尝试在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

2 个答案:

答案 0 :(得分:4)

runat='server'添加到HTML控件时,您更改了渲染,并且内部不支持代码块。

更改自:

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

为:

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

答案 1 :(得分:0)

在Page Load后面的代码中,你不能只是将表的visible属性设置为否定EditDowntimeMode?这似乎是一个比在你正在做的事情中将所有标记混合在一起更好的解决方案。

在后面的代码的Page_Load方法中有类似的东西:

Table1.Visible = Not EditDowntimeMode

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