Ошибка BC30311: почему я не могу использовать PlaceHolder внутри таблицы для определенного пользовательского элемента управления? - PullRequest
2 голосов
/ 15 августа 2011

У нас есть стандартное веб-приложение asp.net, и мы использовали asp: PlaceHolders в нескольких местах. В некоторых файлах мы получаем это сообщение об ошибке во время выполнения:

BC30311: значение типа 'System.Web.UI.WebControls.PlaceHolder' не может преобразовать в 'System.Web.UI.HtmlControls.HtmlTableRow'.

Почему?

Если я удаляю заполнитель, страница отображается нормально.

Вот HTML (упрощенная версия):

<table runat="server" id="tblExtradata" visible=true>               
  <asp:PlaceHolder ID="test" runat="server" Visible="true">
    <tr>
      <td>
        <asp:Label ID="lblExpenses" runat="server" Text="Expensesr"></asp:Label>
      </td>
    </tr>
  </asp:PlaceHolder>
</table>

Информация о версии: Microsoft .NET Framework Версия: 2.0.50727.5446; ASP.NET версия: 2.0.50727.5420

1 Ответ

3 голосов
/ 15 августа 2011

Поскольку вы запускаете таблицу на сервере, она ожидает только вложенные элементы таблицы.Если вы уберете сервер runat = "из таблицы, он должен работать нормально.

...