我有一个自定义模块,它使用Kentico API(DocumentHelper)更新文档的某些字段,然后发布,但我不希望它触发链接到文档页面类型的事件处理程序。我试着给它添加评论。Publish(“admin_edit”)希望我可以从WorkflowEventargs参数捕捉到它,但VersionComment属性总是返回null。肯蒂科有没有办法做到这一点?
更新字段:
var document = DocumentHelper.GetDocument(documentID, tree);
var workflowManager = WorkflowManager.GetInstance(tree);
var workflow = workflowManager.GetNodeWorkflow(document);
if (workflow != null)
{
document.CheckOut();
document.SetValue("SomeFIeld", "some value");
document.Update(true);
document.CheckIn();
document.Publish("admin_edit");
}
事件处理程序:
public override void Init()
{
WorkflowEvents.Publish.After += Publish_After;
}
private void Publish_After(object sender, WorkflowEventArgs e)
{
if (!string.IsNullOrEmpty(e.VersionComment) &&
e.VersionComment.Contains("admin_edit"))
return;
}
版本信息总是为null,因为这与“页面版本控制”事件有关,特别是“保存版本”。你可以在这个链接上找到更多信息。如果展开“属性”,您将看到为特定事件填充了哪些属性。在您的情况下,您可以尝试这样的操作,为最新版本添加消息,然后在“发布后”事件中查看该评论,请参阅下面的代码:
var document = DocumentHelper.GetDocument(documentID, tree);
var workflowManager = WorkflowManager.GetInstance(tree);
var workflow = workflowManager.GetNodeWorkflow(document);
if (workflow != null)
{
document.CheckOut();
document.SetValue("SomeFIeld", "some value");
document.Update(true);
document.CheckIn(versionComment: "admin_edit");
document.Publish();
}
然后,在事件处理程序中,获取最后一个版本并检查如下注释:
if (e.PublishedDocument?.VersionHistory?.Count > 0)
{
var lastVersion = e.PublishedDocument.VersionHistory[0] as VersionHistoryInfo;
if (lastVersion.VersionComment.Equals("admin_edit"))
{
return;
}
}
注意:如果你有很多并发内容编辑器,你的上一个版本可能不是API的版本(有人更改了内容,并在你的API调用更改后立即保存了它)。这种可能性很低,但仍然是可能的。如果这是您经常使用的东西,您必须考虑到它。此代码是针对Kentico 11测试的。
问题内容: 我正在尝试做类似于嵌入式Google地图的操作。我的组件应忽略单点触摸(允许用户滚动页面),并在其自身外部捏合(允许用户缩放页面),但应对双键触摸做出反应(允许用户在组件内部导航),并在这种情况下禁止任何默认操作。 如何防止触摸事件的默认处理,仅在用户用两只手指与我的组件进行交互的情况下? 我尝试过的 我尝试捕获,和。事实证明,在FF Android上,对部件进行捏合时触发的第一个事件
我需要从OracleIdtyManager中的自定义后处理事件处理程序调用外部REST API? 如果有人有想法,请在这里发布。
当我在1到9之间选择一个数字并在控制台中输入一个数字时,该方法会工作并进行正确的移动。但我的问题是如何避免当我输入一个字母而不是一个数字时,程序就崩溃了。
问题内容: 假设我定义了一些全局Ajax事件处理程序(ajaxStart,ajaxStop和ajaxError)。通常,我对此表示满意,但对于一个请求,我想禁用ajaxError处理程序,但仍照常运行ajaxStart和ajaxStop处理程序。在jQuery的AJAX功能的文件中提到,可以设置为false,并传递到$就功能禁用所有全局AJAX事件处理程序的“全球性”的参数,但他们没有提及任何办法
问题内容: 如何防止onclick方法中的默认设置?我有一个传递自定义值的方法 问题答案: 让您的回调返回并将其传递给处理程序: 但是,要创建可 维护的 代码,您应该避免使用_“内联Javascript”_(即直接位于元素标签内的代码),并通过包含的Javascript源文件(称为unobtrusiveJavascript)修改元素的行为。 标记: 代码(单独的文件):
问题内容: 我有一棵divs树: 在div上单击时,将使其子级不可见-即单击“ a”将使“ b”和“ c”不可见。 问题是:单击“ b”将调用“ a”的单击,并使“ b”和“ c”不可见。如何使用jQuery禁用对“ a”的点击? 谢谢 问题答案: 您可以为孩子添加一个处理程序,以防止click事件蔓延: 这样一来,点击不会传播到。都不会单击以转到,因此也不会。