- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在将自定义 OnSaving 事件应用到保存链中的第一项后,我试图停止它。
但到目前为止我还不能,最后我遇到了一个 stackoverflow 异常。
有没有一种简单的方法可以做到这一点?
最好的问候,
罗宾
private void AddOrRemoveRedirectingItemIdFromSavingItemIdList(Item savingItem, SitecoreEventArgs sitecoreEventArgs)
{
ItemLink[] referers = Globals.LinkDatabase.GetReferrers(savingItem);
var guidList = new List<ID>();
foreach (ItemLink link in referers)
{
// checking the database name of the linked Item
if (!link.SourceDatabaseName.Equals(Context.ContentDatabase.Name, StringComparison.CurrentCultureIgnoreCase))
{
continue;
}
Item item = Context.ContentDatabase.Items[link.SourceItemID, savingItem.Language];
// adding the Item to an array if the Item is not null
if (item == null || item.Fields["301Redirect"] == null || item.Fields["301RedirectedTo"] == null)
{
continue;
}
// Update the saving item ids
CheckboxField redirectField = item.Fields["301Redirect"];
if (redirectField.Checked)
{
guidList.Add(item.ID);
}
}
if (guidList.Any())
{
this.SaveIDsToEditingItem(savingItem, guidList, false);
}
}
private void SaveIDsToEditingItem(Item editingItem, IEnumerable<ID> guidList, bool forceModified)
{
Field redirectedToFromItemId = editingItem.Fields["301RedirectedToFromItemId"];
using (new EditContext(editingItem))
{
// Saving the redirected items ids
string redirectedToFromItemIdOld = redirectedToFromItemId.Value;
string redirectedToFromItemIdNew = string.Join("\n", guidList.Select(guid => guid.ToString()));
// if the values are not changed
if (redirectedToFromItemIdNew.Equals(redirectedToFromItemIdOld))
{
return;
}
redirectedToFromItemId.Value = redirectedToFromItemIdNew;
if (forceModified)
{
editingItem.RuntimeSettings.ForceModified = true;
}
}
}
}
最佳答案
您可以通过两种方式执行此操作。更好的方法是从 SaveIDsToEditingItem
中删除 using (new EditingContext(editingItem)
部分。在 OnItemSaving
事件中,对savingItem
将被保留。
或者,如果您需要出于某种原因使用编辑上下文,您需要在SaveIDsToEditingItem
方法中使用EventDisabler:
private void SaveIDsToEditingItem(Item editingItem, IEnumerable<ID> guidList, bool forceModified)
{
Field redirectedToFromItemId = editingItem.Fields["301RedirectedToFromItemId"];
using (new EventDisabler())
{
using (new EditContext(editingItem))
{
// Saving the redirected items ids
string redirectedToFromItemIdOld = redirectedToFromItemId.Value;
string redirectedToFromItemIdNew = string.Join("\n", guidList.Select(guid => guid.ToString()));
// if the values are not changed
if (redirectedToFromItemIdNew.Equals(redirectedToFromItemIdOld))
{
return;
}
redirectedToFromItemId.Value = redirectedToFromItemIdNew;
if (forceModified)
{
editingItem.RuntimeSettings.ForceModified = true;
}
}
}
}
这将防止再次触发 OnSaving
事件。
关于c# - 第一次在 SItecore 中保存后如何停止自定义 OnSaving 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36007791/
我有一个代码可以填充约会实体中的主题字段。但是当我单击“保存”时,我看到主题字段中的值,但它突然消失了。它在填充后删除/清除该字段。我该如何修复它?我认为我的代码有问题。 最佳答案 听起来您的代码已附
情况是我想创建一个应用程序,每次单击按钮时它应该能够在 LinearLayout 中创建一个新的 TextView。来自EditText的文本被分配给所述TextView。我成功地做到了这一点。然而,
我正在定制我们的 CRM 解决方案,但今天遇到了一个问题。我有一个由 OnSave 事件触发的 JavaScript。此 JavaScript 更新表单中的字段,并尝试再次保存。 当脚本执行时,我可以
当用户尝试保存页面时,有没有办法检测/拦截?这将使我能够正确嵌入任何外部文件,并为用户提供功能齐全的离线应用程序。 另一种解决方案是从一开始就嵌入这些资源,但它消耗了太多资源,并且剥夺了一些动态能力。
我已经创建了一个 onLoad 方法来在程序中使用序列化,但我想同时使用 onSave 方法,这样当程序关闭并再次启动时,我就不必一次又一次地填充我的 Jlists。 我尝试创建自己的 onSave
我有简单的 NHibernate 拦截器和覆盖方法 OnSave()。 现在我在这里要做的是获取字符串属性的 SQL 长度。那可能吗。 我可以看到属性 IType[] types 包含 SqlType
我使用这个库:https://www.npmjs.com/package/react-editext . 当我有 onSave = (val) => { console.log (val) } 在
我正在尝试向自定义实体、MFA 添加版本控制功能,但我遇到了一个非常奇怪的问题。我有一个从两个地方调用的 javascript webresource:表单上的 onSave 事件,以及作为自定义功能
我一直在尝试在 Flutter 中实现一个小表单,发现 onChanged 和 onSaved 事件在 2 个 TextInput 小部件中的任何一个上都不可用。 onChanged 定义在 Text
我在 Flutter TextFormField 中有一个奇怪的问题。我在 TextFormField 中实现了表单验证。但是验证成功后不会调用 onSaved() 函数。 首先我使用 TextFor
我正在使用 DevExpress XAF 处理一段代码,我注意到如果我使用代码执行 2 次的事件 OnSaving,我该如何防止这种情况发生 protected override void OnSav
我在 crm 2015 本地组织上以自定义实体的形式注册了 onSave 事件,该事件似乎进入了递归调用。在我点击“保存”后,事件不断地调用它自己,直到我通过任务管理器杀死 IE 或 IE 因内存堆栈
我已经为自定义实体编写了一些代码,这些代码动态地提出用户必须回答的问题。该代码创建答复记录,然后将其与其父记录关联。 我的问题是,我希望用户能够在必须保存他们回答问题的记录之前完成答案。问题是,为了将
在将自定义 OnSaving 事件应用到保存链中的第一项后,我试图停止它。 但到目前为止我还不能,最后我遇到了一个 stackoverflow 异常。 有没有一种简单的方法可以做到这一点? 最好的问候
我现在正在处理一个 CRM 表单,如果在选项集中选择了特定选项,则需要发送电子邮件。电子邮件地址保存为另一个表单中的字段。 执行此操作的最佳方法是什么?我应该使用 onSave 事件来触发 javas
我编写了一些 JavaScript 并将其附加到实体的 onSave 事件上,以便在记录停用时执行一些操作。这在表单上运行良好,但如果用户决定从实体 View 中停用记录,则不会触发此代码。有没有办法
我在报价产品上有一个脚本,我想在保存表单时更新税值。但是,它确实根据字段的先前值更新了税收。脚本如下: function tax () { var val0 = Xrm.Page.getAttr
为了创建一个返回 TextFormField 的可重用小部件,有没有办法在调用 onSaved 时传递需要更新的字段? 考虑以下 map : Map myMap = { 'a': 1,
我正在努力用 ServiceStack 的 ORMLite 替换现有的“重型”商业 ORM。在重型 ORM 中,我们有能力 Hook “OnSaving”或“BeforeSaving”方法以在保存到数
有没有办法告诉 NetBeans 在保存文件时执行特定操作?例如保存源文件时删除未使用的导入? 最佳答案 这是一个有趣的问题......因为我相信你必须编写一个自定义的 NetBeans 插件来做你想
我是一名优秀的程序员,十分优秀!