code blocks are not supported in this context in asp.net control

mathirengasamy picture mathirengasamy · Feb 1, 2011 · Viewed 32.5k times · Source

I'm creating one html table. I want to hide the table row. I'm putting the attributes runat=server and id for the particular row, but the row has client side code in it similar to the following code.

<% if ((strFlag=="d") || (strApprvdFlag=="y")) {%>

After call this line, I got this error.

Code blocks are not supported in this context in asp.net control.

Below is my sample code:

<table>
  <tr colspan="4" ID="trMedical"  scriptrunat="server">
    <td style="WIDTH: 45px;HEIGHT: 12px" align="left" class="LabelTaxText" width="45"><b>G&nbsp;
        </b>
    </td>
    <td style="WIDTH: 182px;HEIGHT: 12px" class="LabelTaxText" align="left" width="182"
        colSpan="2">Medical
    </td>
    <td style="WIDTH: 81px; HEIGHT: 12px" align="right" class="LabelTaxText" width="81">
        <asp:textbox onchange="onChangeFlag(),intOnly(this);" onkeyup="intOnly(this);" onkeypress="return CheckNumericWithOutDecimals(event)"
            id="TxtMedical" tabIndex="24" runat="server" Width="96px" MaxLength="12" style="Z-INDEX: 0"></asp:textbox>
    </td>
    <% if ((strFlag=="d") || (strApprvdFlag=="y")) {%>
        <td class="LabelTaxText" style="WIDTH: 107px; HEIGHT: 12px" align="right" width="107">
            <asp:textbox onchange="onChangeFlag(),intOnly(this);" onkeyup="intOnly(this);" onkeypress="return CheckNumericWithOutDecimals(event)" id="TxtMedicalProof" tabIndex="24"     onblur="charAlert(TxtMedical,TxtMedicalProof)" runat="server" MaxLength="12" Width="96px">
            </asp:textbox>
        </td>
    <% } %>
    <% if (strApprvdFlag=="y") {%>
        <td class="LabelTaxText" style="WIDTH: 68px; HEIGHT: 24px" align="right" width="68">
            <asp:textbox id="TxtMedicalApproved" tabIndex="24" runat="server" MaxLength="12" Width="96px"></asp:textbox>
        </td>
        <td class="LabelTaxText" style="WIDTH: 43px">&nbsp;
            <asp:Label ID="lblMedicalRemarks" Runat="server"></asp:Label>
        </td>
    <% } %>
  </tr>
</table>

Answer

Keltex picture Keltex · Feb 1, 2011

When you add a runat='server' to an HTML control you change the rendering and code blocks aren't supported inside. So if there are properties you need to change (style? class?) you probably have to instead of doing this:

<tr id='myrow' runat='server'>
    <td> 
        your code here
    </td>
</tr>

Do something like this:

<tr id='myrow' <%= GetRowProperties() %>>
    <td> 
        your code here
    </td>
</tr>

Note: runat='server' removed from tr. Then in your codebehind you can do something like this:

protected string GetRowProperties()
{
    return "class='myclass'"; // something like this
}