簡體   English   中英

asp.net 用戶控件和嵌套標簽

[英]asp.net usercontrols and nested tags

我們如何創建由嵌套標簽組成的 UserControl,如下所示:

    <uc:MyPanel>
       <header>
           title here...
       </header>

       <content>
           content here...
       </content>
    </uc:MyPanel>

要執行您要查找的操作,您需要創建一個可以解釋嵌套標記的自定義服務器控件。 這將需要大量的工作。

您似乎正在嘗試為您的網站創建布局。 如果這是您想要做的,您最好使用母版頁,並為 header、頁腳、內容等創建內容占位符。

這是我找到的解決方案,對於想要做同樣事情的人來說

彈出窗口.ascx

<%@ Control Language="C#" AutoEventWireup="true" 
  CodeBehind="Popup.ascx.cs" Inherits="Dynamic.Popup" %>
<div style="width: 400px; padding: 1px; border: 1px solid #BED6F8;
  background-color: #FFFFFF; position: absolute" runat="server" id="panel">
   <div style="padding: 1px 1px 2px 5px; height: 18px; border: 1px solid #BED6F8; cursor: move;
   background: -moz-linear-gradient(top, white,#BED6F8); background-color: #BED6F8"
   runat="server" id="titlePanel">

   <asp:Literal ID="ltTitre" runat="server"></asp:Literal>

   <div style="position: absolute; right: 3px; top: 3px; z-index: 100; cursor: pointer">
       <img src="close.png" alt="fermer" onclick="$find('popUpPanel').hide();" />
   </div>

Popup.ascx.cs

 [ParseChildren(true)]
  public partial class Popup : System.Web.UI.UserControl
  {
   [TemplateContainer(typeof(MessageContainer))]
   [PersistenceMode(PersistenceMode.InnerProperty)]
   public ITemplate MessageTemplate { get; set; } 

   public string Text { get; set; }

  protected void Page_Init(object sender, EventArgs e)
  {
    ltTitre.Text = Text;

     if (MessageTemplate != null)
     {
        var i = new MessageContainer();
        MessageTemplate.InstantiateIn(i);
        PlaceHolder1.Controls.Add(i);
     }           
   }

     public class MessageContainer : Control, INamingContainer{ }
 }

用戶控件的使用

<uc:Popup ID="p" runat="server" Text="Titre1">
    <MessageTemplate>
     <asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>
       Test
    </MessageTemplate>
</uc:Popup>

我猜您正在尋找的是帶有Content Place holder的 Master pages 。 例如

 <div class="page">
    <div class="header">
        <div class="title">
            <h1>
                My ASP.NET Application
            </h1>
        </div>            
    </div>
    <div class="main">
        <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
    </div>
    <div class="clear">
    </div>
</div>
<div class="footer">

</div>

看看這個ASP.NET Master Pages Tutorials

我想我明白你在追求什么,因為我過去試圖自己找到一種方法。 我有一些復雜的 HTML 生成了一個帶有 header 的盒子。 而不是復制 HTML,每次我需要這個盒子時,我希望我可以指定一個嵌套在里面的 header/content/whateverelse 標簽。

我找不到我原來的問題,但我記得那里並不是我正在尋找的答案。

最后,我相信我被告知要研究自定義服務器控件而不是用戶控件。

我希望這有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM