#asp.net #webforms #controls #reusability
#asp.net #веб-формы #элементы управления #возможность повторного использования
Вопрос:
Возможно ли его повторное использование asp.net элементы управления в нескольких представлениях внутри мультивидения? Я хотел бы предоставить своим клиентам возможность просматривать и заполнять форму в виде 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
букв в свою разметку и создал кнопку переключения в своем 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
ВАУ!! : D ТАК СЧАСТЛИВ!! Ты даже не представляешь, сколько боли это мне причиняет: P
Примечание: я заметил, что он не очень хорошо поддерживает состояние, но это очень легко исправить по сравнению с переписыванием двойного кода>. <
Ответ №1:
По крайней мере, вы можете иметь один экземпляр Label в своем коде и добавить его программно в нужное место по условию, используя заполнители в обоих местах.
Кроме того, вы можете создать новый пользовательский элемент управления и поместить туда всю логику, которая покрывает вашу метку. У вас по-прежнему будет 2 экземпляра этого элемента управления, но вы создадите свой ярлык один раз.
Комментарии:
1. Но как можно заменить заполнитель на
DropDownList
,CheckBoxList
, что у вас есть; вместе с соответствующими значениями / выборками и после этого ссылаться на идентификатор клиента системы управления версиями? На моей странице есть ДЕСЯТКИ элементов управления, и мне бы очень хотелось максимально снизить сложность моего веб-приложения.2. ЕЛКИ-ПАЛКИ!! Это работает!! Я уже рассматривал этот заполнитель раньше, но понятия не имел, что он настолько прост в использовании, пока мне не посчастливилось найти другую статью, в которой это объяснялось простыми словами. О БОЖЕ!! Спасибо за подтверждение ответа для меня. Приветствия 🙂
3. @Chiramisu — не могли бы вы предоставить ссылку на статью, на которую вы ссылаетесь в своем комментарии, спасибо
4. @ChrisB Извини, Крис, я не знаю, на какую статью я ссылался, поскольку это было так давно, но я обновил свой вопрос, включив в него свою реализацию. Однако я отмечу, что это некоторые проблемы жизненного цикла страницы, которые необходимо преодолеть, чтобы они работали должным образом.