Kentico 9:在自定义模块中自动添加绑定

时间:2016-10-26 15:20:44

标签: kentico

我已经创建了一个自定义模块(实际上我在最近几年创建了一些模块,并且每次都有这个障碍让我感到沮丧)遵循Kentico文档:

https://docs.kentico.com/display/K9/Creating+custom+modules

我每次都遇到的问题是为父/子类开发用户界面。我创建了一个Vertical Tab节点,在它下面我为子类添加了一个编辑选项卡和一个Binding选项卡。这一切都有效,我可以随意添加和删除绑定,但我不能做的是添加一个新的子类并绑定它。

Custom Module User Interface Configuration

使用标准编辑绑定模板,我能够将现有作业标题绑定到所选类别,但我无法从该页面创建新标题:

Standard Binding Missing Add Funstionality

为了解决这个问题,我创建了一个自定义编辑绑定模板,并添加了一个指向新建/编辑对象子项的新子类标题操作:

enter image description here

enter image description here

这给了我一个按钮,我可以用它来添加一个新的子类(Job Title):

enter image description here

这种方法本身就是可行的,因为我可以点击新职位按钮并在后续页面上创建一个新项目:

enter image description here

但是没有创建绑定子对象(作业标题)与选定的父对象(类别)的绑定,更大的问题是,一旦我点击保存,我会看到以下内容:

enter image description here

新对象已保存,但保存后导航以某种方式失败。事件日志几乎没有提供诊断方法:

enter image description here

根据Kentico文档,我想在这里创建一个完全自定义的界面来满足我的需求:

https://docs.kentico.com/display/K9/Manually+creating+the+interface+for+custom+modules

所以我将New Job Title页面的Element Content更改为我创建的自定义页面,以便为新对象发布DataForm:

enter image description here

注意在属性标签上指定正确的对象类型

enter image description here

目的是以编程方式在保存时创建绑定并处理正确的导航以避免上面的模糊参数错误,但是当加载此页面时,UIContext.ObjectID和UIContext.ParentObjectID都为0:

enter image description here

所以我无法以编程方式创建绑定。然而,我能够通过手动分配重定向来解决我收到的错误。即使使用此黑客,仍然缺乏体验,因为它返回到列表页面,但用户仍然必须在使用我构建的自定义页面成功创建绑定后单击“添加项目”来分配绑定。

这可能不是正确的方法,所以任何有助于让我走上正确轨道的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

为了使EditedObject具有值,您必须使用EditedObjectAtribute装饰页面,例如像这样:

[EditedObject("<custom.objecttype>", "<objectid>", ...)]

enter image description here

或自己设置对象:

int objectId = QueryHelper.GetInteger("objectid", 0);
EditedObject = SomeInfoProvider.GetSomeInfo(objectId);

在您的情况下,我建议您浏览页面上可用的查询参数,并使用它们来获取适当的对象。另外,确保将“JobCategoryId”传递给“New Job Title”对话框,以便创建绑定。

顺便说一句 - 对于问题很好的问题感到荣幸!