Umbraco:文档加载后渲染服务器端脚本

时间:2012-06-28 11:27:33

标签: asp.net razor umbraco

我有一个基于.NET&amp ;;的脚本。在任何html元素呈现之前,立即在网页上呈现的Razor。除了MySQL查询之外,该脚本还使用以下方法在屏幕上编写一些数据:

Response.Write("Some data");

我正在使用Umbraco v4.7.2并且希望脚本在整个文档加载后呈现我插入宏的位置。我已经尝试将我的脚本包装在事件处理程序中,类似于以下内容,但是无法识别并导致整个脚本呈现为文本:

protected void Page_LoadComplete(object sender, EventArgs e)  {
    Response.Write("Page Load Complete!");
}

事件处理程序似乎经常被使用,但我不太了解Umbraco文档,我需要在我的剃刀脚本中引用它以便呈现它们吗?我需要引用“cs”文件吗?

我也尝试使用'RenderEvent'属性,该属性基于我的脚本似乎没有做任何事情。

2 个答案:

答案 0 :(得分:1)

Umbraco事件主要用于处理API;文档保存,发布,删除等时

使用不同的方法,您可以构建一个Umbraco基类,然后在加载时使用Javascript AJAX调用将结果拉下来。 Umbraco base允许您快速构建REST扩展,允许您通过API访问Umbraco。

这是一个示例基类:

using umbraco.presentation.umbracobase;

namespace BaseExample
{
    [RestExtension("MyAlias")]
    public class TestClass
    {
        [RestExtensionMethod(allowAll = true)]
        public static string GetData()
        {
            return "Some data";
        }
    }
} 

更详细的说明可以在Umbraco wiki中找到。将基类的DLL放入bin目录后,可以通过导航到http://[domain]/base/MyAlias/GetData来调用该方法。默认情况下,该方法将返回XML,但为了更容易地将其与Javascript集成,您可以让它返回JSON。查看this SO answer了解详情。

答案 1 :(得分:0)

我终于找到了最简单的解决方案;使用@ Html.Raw()而不是Response.Write(“Some data”)做了我需要做的事。