0

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

Response.Write("Some data");

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

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

事件处理程序似乎经常使用,但我不太了解 Umbraco 文档,我需要在我的 razor 脚本中引用一些东西才能渲染它们吗?是否有我需要参考的“cs”文件?

我也尝试过使用“RenderEvent”属性,根据我的脚本,它似乎没有做任何事情。

4

2 回答 2

1

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

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

这是一个示例基类:

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。查看此 SO 答案以获取更多详细信息。

于 2012-06-28T14:35:40.927 回答
0

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

于 2012-09-25T08:22:15.513 回答