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