【问题标题】:Reusing ASP.NET Controls in Multiple Views在多个视图中重用 ASP.NET 控件
【发布时间】: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


    【解决方案1】:

    至少,您可以在代码隐藏中拥有一个 Label 实例,并通过在两个位置使用占位符以编程方式将其添加到所需位置。

    您还可以创建一个新的用户控件,并将所有覆盖您的标签的逻辑放在那里。您仍将拥有此控件的 2 个实例,但您将设计一次标签。

    【讨论】:

    • 但是占位符怎么可以换成DropDownListCheckBoxList,你有什么;连同相关的值/选择,然后由源代码控制 ClientID 引用?我的页面上有数十个控件,并且非常希望尽可能减少我的网络应用程序的复杂性。
    • 圣烟!!有用!!我之前在看那个占位符,但是直到我有幸找到另一篇用简单的术语解释它的文章,我才知道它使用起来如此简单。天啊!!感谢您为我确认答案。干杯:)
    • @Chiramisu - 您能否提供您在评论中引用的文章的链接,谢谢
    • @ChrisB 对不起,克里斯,我不知道我引用了什么文章是很久以前的事了,但我确实更新了我的问题以包括我的实现。我会注意到它们是一些必须克服的页面生命周期问题才能使其正常工作。
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2018-04-04
    • 2010-12-09
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    相关资源
    最近更新 更多