【发布时间】:2011-10-27 23:11:27
【问题描述】:
是否可以在 MultiView 内的多个视图中重用 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>
有答案的更新!!
我只是在我的标记中添加了一些 PlaceHolders,并在我的 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
注意:我注意到它不能很好地保持状态,但与重写代码相比,它非常容易修复>.
【问题讨论】:
标签: asp.net webforms controls reusability