首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在umbraco模板中页面加载时呈现宏控件

在umbraco模板中页面加载时呈现宏控件
EN

Stack Overflow用户
提问于 2012-08-07 11:43:57
回答 1查看 2.1K关注 0票数 1

我正在尝试加载剃须刀脚本,它作为一个单独的宏存在于umbraco中。我使用的是umbraco 4.7.0

我基本上是在进行地理定位,因此每次在加载页面时都需要运行脚本。所以我在寻找这样的东西:

代码语言:javascript
复制
 <script type="c#" runat="server">
protected void Page_Load(object sender, EventArgs e)
  {
    Call the Macro here
  }

显然,我可以在模板中做到这一点。

代码语言:javascript
复制
 <umbraco:Macro Alias="GeoTargetting" runat="server" />

但是在页面中加载任何控件之前,我需要调用这个宏。

PLease帮助。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-08-08 23:14:30

这似乎是正常的:

模板:

代码语言:javascript
复制
<umbraco:Macro Alias="Sandbox" runat="server"></umbraco:Macro>
<asp:Label runat="server" ID="Label1" Text="Yo"></asp:Label>

宏脚本:

代码语言:javascript
复制
@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()方法来自于这个论坛线

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11845239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档