Umbraco 单击“保存”按钮后,在保存更改之前,在“内容”选项卡中获取节点的已更改未保存属性值。翁布拉科

Umbraco 单击“保存”按钮后,在保存更改之前,在“内容”选项卡中获取节点的已更改未保存属性值。翁布拉科,umbraco,Umbraco,更新: 我想在BackOffice的“内容”选项卡上获取在单击“保存”按钮之后和以编程方式保存更改之前已更改的节点属性值 节点可以包含许多属性。单击“保存”按钮时,我想首先获取节点属性的新更改值。我认为Umbraco应该有API,以便在服务器端获得这些API 如果您有任何想法,我们将不胜感激。您可以使用jquery事件处理程序,该处理程序针对您要检查更改的umbraco admin中的字段。此示例将通过查找要监视的umbraco字段的标签来工作,然后添加jquery事件处理程序,该处理程序将在更

更新:

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


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


如果您有任何想法,我们将不胜感激。

您可以使用jquery事件处理程序,该处理程序针对您要检查更改的umbraco admin中的字段。此示例将通过查找要监视的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>

$(文档).ready(函数(){
$(“div.propertyItemheader:contains('Name')+div.propertyItemContent”).keyup(函数(){
警报(“字段更改”);
});
});

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

我在Umbraco4.11中测试了这个

干杯


Jonathan

节点可能包含许多属性。理想情况下,我需要服务器端的逻辑。在这里执行客户端工作实际上不符合Umbraco的最佳做法,因为它会在服务器端公开这些事件和属性。请查找我的更新。如果需要,我可以提供更多信息。我试过了。但保存前文档中发件人的状态不是已更改和未保存的值。例如,如果我将文档A的内容从apple更改为橙色,然后单击“保存”按钮,则发件人将返回apple not orange。在AfterSave事件中,您将在
sender.getProperty(“bodyText”).Value中获得“orange”。
(将“bodyText”替换为您想要的任何属性)
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
        }

    }
}