【问题标题】:How to contain sections of HTML and other controls within a server control?如何在服务器控件中包含 HTML 部分和其他控件?
【发布时间】:2012-09-06 12:12:05
【问题描述】:

我正在尝试在服务器控件中实现类似的功能。

<MyNewControl runat="server">
    <FirstTemplate>
        <asp:Label runat="server" ForeColor="Red">Hello</asp:Label>
    </FirstTemplate>
    <SecondTemplate>
        <asp:Label runat="server" ForeColor="Blue">Hello</asp:Label>
    </SecondTemplate>
</MyNewControl>

我希望知道如何实现 MyNewControl 服务器控件以接受这些模板容器。 我希望它们允许更复杂的内容,而不仅仅是包含标签。
目标是能够选择我希望控件呈现的模板。

我环顾四周,找不到可以告诉我支持我正在寻找的 ASP.NET 的哪个部分的内容。

【问题讨论】:

  • 您想使用模板(绑定到数据源),还是只是通过标记在您的模板中嵌入其他控件?如果您需要第二件事:stackoverflow.com/questions/7527573 .

标签: asp.net custom-server-controls


【解决方案1】:

如果目标是选择要呈现的内容,您可以使用内置的 ASP.NET MultiView 控件而不是自己编写。

例如ASPX 标记:

<asp:MultiView ID="multiExample" runat="server">
  <asp:View ID="viewOne" runat="server">
    <h1>This is my first view</h1>
  </asp:View>
  <asp:View ID="viewTwo" runat="server">
    <h1>This is my second view</h1>
  </asp:View>
</asp:MultiView>

用于在“模板”之间切换的 C# 代码隐藏代码:

  if (condition1)
  {
    multiExample.SetActiveView(viewOne);
  }
  else
  {
    multiExample.SetActiveView(viewTwo);
  }

如果您想了解如何从头开始创建模板化用户控件,这里有一个 MSDN 教程:http://msdn.microsoft.com/en-us/library/36574bf6(v=vs.100).aspx

【讨论】:

  • 我很高兴你这么说......我基本上是在寻找一个类似于MultiView的自定义控件——我如何实现自己的内部标签(例如View 在您的示例中)。
  • 您所指的“内部标签”是“模板”。我的答案末尾的链接显示了如何创建模板化用户控件(即您可以使用“内部标签”的用户控件)
  • 是的,但我正在寻找服务器控件 =)
  • @BeemerGuy.net 在这种情况下,也许这会有所帮助; “模板化服务器控制示例”:msdn.microsoft.com/en-us/library/ms178657(v=vs.100).aspx
猜你喜欢
  • 1970-01-01
  • 2011-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多