Повторное использование элементов управления ASP.NET в нескольких представлениях - PullRequest
1 голос
/ 28 октября 2011

Можно ли повторно использовать элементы управления asp.net в нескольких представлениях в MultiView?Я хотел бы предоставить своим клиентам возможность просмотра и ввода формы в виде мастера ASP.NET или формы в зависимости от их предпочтений.Большая часть моих исследований привела к многочисленным попаданиям в MVC, но я использую WebForms и не могу найти однозначный ответ в любом случае.

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

Например, что-то вроде этого возможно:

<asp:MultiView ID="mv" runat="server" ActiveViewIndex="0">
    <asp:View ID="WizardView" runat="server">
        <asp:Wizard ID="wizzy" runat="server" ActiveStepIndex="0">
            <WizardSteps>
                <asp:WizardStep ID="WizardStep1" runat="server">
                    <!-- Wrapped in PlaceHolder goodness :P -->
                    <asp:PlaceHolder ID="wPH1" runat="server">
                        <asp:Label ID="MyLabel" runat="server" Text="Hello Stackies"></asp:Label>
                    </asp:PlaceHolder>
                </asp:WizardStep>
            </WizardSteps>
        </asp:Wizard>
    </asp:View>
    <asp:View ID="FormView" runat="server">
        <form action="#" method="post" id="wizzyform">
            <!-- I WANT TO REUSE THIS CONTROL HERE -->
            <asp:PlaceHolder ID="fPH1" runat="server"></asp:PlaceHolder>
        </form>
    </asp:View>
</asp:MultiView>

ОБНОВЛЕНИЕ С ОТВЕТОМ !!

Я просто добавил несколько PlaceHolder s к моей разметке и создал кнопку переключения в моем коде VB.NET со следующим:

Protected Sub ToggleView() Handles ViewToggleBtn.Click
    If RequestWizard_mv.ActiveViewIndex = 0 Then
        ViewToggleBtn.Text = "Toggle Wizard View"
        RequestWizard_mv.ActiveViewIndex = 1
        fPH1.Controls.Add(wPH1)
    ElseIf RequestWizard_mv.ActiveViewIndex = 1 Then
        ViewToggleBtn.Text = "Toggle Form View"
        RequestWizard_mv.ActiveViewIndex = 0
        wPH1.Controls.Add(fPH1)
    End If
End Sub

Woot !!: D ТАК СЧАСТЛИВЫМ !!Вы не представляете, сколько боли это спасает меня: P

Примечание: я заметил, что он не очень хорошо поддерживает состояние, но это очень легко исправить по сравнению с повторной записью кода>. <</p>

1 Ответ

1 голос
/ 28 октября 2011

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

Также вы можете создать новый пользовательский элемент управления и разместить там всю логику, которая покрывает вашу метку.У вас все еще будет 2 экземпляра этого элемента управления, но вы создадите свой ярлык один раз.

...