[英]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.