2

更新:

我想在 BackOffice 的内容选项卡上获取在单击保存按钮后和以编程方式保存更改之前已更改的节点属性值。

该节点可以包含许多属性。单击保存按钮时,我想首先获取节点属性的新更改值。我认为 Umbraco 应该有 API 来获取服务器端的 API。

任何想法将不胜感激。

4

2 回答 2

1

您想要连接到 IApplicationEventHandler 类中的 Document.BeforeSave 方法。像这样(假设您将 bodyText 从“apple”更改为“orange”):

using umbraco.cms.businesslogic.web;
using Umbraco.Core;
using Umbraco.Web;


namespace ClassLibrary1
{
    public class Class1 : IApplicationEventHandler
    {
        public void OnApplicationStarted(UmbracoApplication httpApplication, ApplicationContext applicationContext)
        {
            Document.BeforeSave += new Document.SaveEventHandler(Document_BeforeSave);
            Document.AfterSave += new Document.SaveEventHandler(Document_AfterSave);
        }

        void Document_BeforeSave(Document sender, umbraco.cms.businesslogic.SaveEventArgs e)
        {
            // your code goes here!
            sender.getProperty("bodyText").Value // returns apple
        }

        void Document_AfterSave(Document sender, umbraco.cms.businesslogic.SaveEventArgs e)
        {
            // your code goes here!
            sender.getProperty("bodyText").Value // returns orange
        }

        public void OnApplicationStarting(UmbracoApplication httpApplication, ApplicationContext applicationContext)
        {
            // unused
        }

        public void OnApplicationInitialized(UmbracoApplication httpApplication, ApplicationContext applicationContext)
        {
            // unused
        }

    }
}

我在 Umbraco 4.11 中对此进行了测试

干杯

乔纳森

于 2012-12-17T22:02:21.780 回答
0

您可以做的是使用 jquery 事件处理程序,该处理程序针对您要检查更改的 umbraco 管理员中的字段。此示例将通过查找要监视的 umbraco 字段的标签来工作,然后添加一个 jquery 事件处理程序,该处理程序将在与标签同级的字段发生更改时触发 - 此示例适用于对“名称”的任何更改' 每个节点的“属性”选项卡上的字段。不同的字段类型会以不同的方式保存值,因此 $(this).val() 通常应该适用于大多数 - 但不是所有字段类型。

将其放到 \umbraco\editcontent.aspx 的末尾

    <script type="text/javascript">
        $(document).ready(function () {
            $("div.propertyItemheader:contains('Name') + div.propertyItemContent").keyup(function () {
                alert("field changed");
            });

        });
</script>
于 2012-12-16T19:34:51.840 回答