簡體   English   中英

在umbraco模板中的頁面加載時呈現宏控件

[英]Render Macro control on page load in umbraco template

我正在嘗試加載作為umbraco中的單獨宏存在的剃刀腳本。 我正在使用umbraco 4.7.0

我基本上是在進行地理位置定位,因此每次加載頁面時都需要運行腳本。 所以我正在尋找類似的東西:

 <script type="c#" runat="server">
protected void Page_Load(object sender, EventArgs e)
  {
    Call the Macro here
  }

顯然我可以在模板中執行此操作

 <umbraco:Macro Alias="GeoTargetting" runat="server" />

但是我需要在頁面中加載任何控件之前調用此宏。

請幫忙。

謝謝

這似乎正常工作:

模板:

<umbraco:Macro Alias="Sandbox" runat="server"></umbraco:Macro>
<asp:Label runat="server" ID="Label1" Text="Yo"></asp:Label>

宏腳本:

@using System.Web.UI.WebControls
@using umbraco.MacroEngines
@inherits DynamicNodeContext
@{
    Page page = HttpContext.Current.Handler as Page;
    page.Load += new EventHandler(page_Load);
}

@functions
{
    static void page_Load(object sender, EventArgs e)
    {
        Page page = sender as Page;
        Label label = FindControlRecursive(page, "Label1") as Label;
        label.Text = "Hello";
    }

    private static Control FindControlRecursive(Control Root, string Id)
    {
        if (Root.ID == Id)
            return Root;

        foreach (Control Ctl in Root.Controls)
        {
            Control FoundCtl = FindControlRecursive(Ctl, Id);

            if (FoundCtl != null)
                return FoundCtl;
        }

        return null;
    }
}

注意: FindControlRecursive()方法來自此論壇線程

暫無
暫無

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

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