2011-06-20 50 views
3

我遇到此錯誤只需嘗試在ASP.NET標記中插入一些VB.NET代碼。看到代碼:「在此上下文中不支持代碼塊」錯誤ASP.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 

回答

4

當您添加runat='server'你改變渲染和代碼塊不支持內部HTML控件。

從:更改

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

到:

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

在頁面加載後面的代碼,不能你剛纔設置表的Visible屬性設置EditDowntimeMode的否定?這似乎是一個更好的解決方案,而不是試圖將所有標記混合在一起。

像這樣在代碼的Page_Load方法背後:如果是這樣的情況下的示例代碼

Table1.Visible = Not EditDowntimeMode 

在問題中的給定的例子的代碼應當被更新具有如果阻擋在外桌子上的一切。您可以使用ASP:Panel塊並控制其對另一個想法的可見性,或者可能嵌套這些表,以便內部表可以是「EditDowntimeMode」將顯示在其自己的表中的內容。

+0

不能這樣做,因爲表中還有其他東西需要顯示。 –

相關問題