Шаблоны FormView ломаются при рефакторинге в Master / Content - PullRequest
0 голосов
/ 28 апреля 2010

Допустим, у меня есть абстрактный класс IA с подклассами A1, A2, A3.

Для каждого подкласса у меня была страница с FormView для вставки / редактирования / просмотра с кодом, специфичным для этого класса. Шаблоны для вставки / редактирования / просмотра очень похожи, поэтому в основном это были вырезать и вставить, и у компилятора не было проблем с тем, что в разных шаблонах были элементы управления с одинаковыми идентификаторами.

Примерно так:

<asp:FormView>
    <InsertItemTemplate>
        <asp:Label id="Label1" />
    </InsertItemTemplate>
    <EditItemTemplate>
        <asp:Label id="Label1" />
    </EdittItemTemplate>
</asp:FormView>

Большая часть кода / разметки оказалась избыточной на всех страницах, поэтому я реорганизовал ее для использования формата master / content, при этом главная страница содержала заполнители содержимого для шаблонов вставки, редактирования и просмотра.

Главная страница:

<asp:FormView>
    <InsertItemTemplate>
        <asp:ContentPlaceHolder ID="InsertItemTemplate"></asp:ContentPlaceHolder>
    </InsertItemTemplate>
    <EditItemTemplate>
        <asp:ContentPlaceHolder ID="EditItemTemplate"></asp:ContentPlaceHolder>
    </EdittItemTemplate>
</asp:FormView>

И содержание страницы:

<asp:Content ContentPlaceHolderID="InsertItemTemplate">
    <asp:Label id="Label1" />
</asp:Content>
<asp:Content ContentPlaceHolderID="EditItemTemplate">
    <asp:Label id="Label1" />
</asp:Content>

В шаблонах страницы содержимого я делаю то же самое, что делал до рефакторинга, но теперь компилятор взрывается с ошибкой BC30260: 'Label1' is already declared as 'Protected WithEvents Label1 As System.Web.UI.WebControls.Label' in this class.

По какой-то причине он не разделяет элементы управления в блоках контента так же, как это делалось, когда они были в шаблонах, даже если заполнители контента находятся в отдельных шаблонах.

Есть ли способ обойти это, кроме как переименовать все мои элементы управления?

1 Ответ

0 голосов
/ 28 апреля 2010

Я отказываюсь от этой тактики, поскольку этот вопрос: FormView на главной странице не может видеть элементы управления с привязкой к данным через границу ContentPlaceHolder , похоже, разрушает любую надежду на эту работу так, как я хочу.

...