【问题标题】:Umbraco: render server-side script once document has loadedUmbraco:加载文档后渲染服务器端脚本
【发布时间】:2012-06-29 21:53:24
【问题描述】:

我有一个基于 .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”属性,根据我的脚本,该属性似乎没有做任何事情。

【问题讨论】:

  • 不幸的是,我对 Razor 的了解不够,无法自信地回答。对于传统的 WebForms,我建议使用 Literals 来放置您的代码。但是这个答案有用吗? - How to use Razor like asp:Literal?
  • 感谢您的建议,这看起来可以帮助我!

标签: asp.net razor umbraco


【解决方案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。查看this SO answer了解更多详情。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多