我已经创建了一个自定义模块(实际上我在最近几年创建了一些模块,并且每次都有这个障碍让我感到沮丧)遵循Kentico文档:
https://docs.kentico.com/display/K9/Creating+custom+modules
我每次都遇到的问题是为父/子类开发用户界面。我创建了一个Vertical Tab节点,在它下面我为子类添加了一个编辑选项卡和一个Binding选项卡。这一切都有效,我可以随意添加和删除绑定,但我不能做的是添加一个新的子类并绑定它。
使用标准编辑绑定模板,我能够将现有作业标题绑定到所选类别,但我无法从该页面创建新标题:
为了解决这个问题,我创建了一个自定义编辑绑定模板,并添加了一个指向新建/编辑对象子项的新子类标题操作:
这给了我一个按钮,我可以用它来添加一个新的子类(Job Title):
这种方法本身就是可行的,因为我可以点击新职位按钮并在后续页面上创建一个新项目:
但是没有创建绑定子对象(作业标题)与选定的父对象(类别)的绑定,更大的问题是,一旦我点击保存,我会看到以下内容:
新对象已保存,但保存后导航以某种方式失败。事件日志几乎没有提供诊断方法:
根据Kentico文档,我想在这里创建一个完全自定义的界面来满足我的需求:
https://docs.kentico.com/display/K9/Manually+creating+the+interface+for+custom+modules
所以我将New Job Title页面的Element Content更改为我创建的自定义页面,以便为新对象发布DataForm:
注意在属性标签上指定正确的对象类型:
目的是以编程方式在保存时创建绑定并处理正确的导航以避免上面的模糊参数错误,但是当加载此页面时,UIContext.ObjectID和UIContext.ParentObjectID都为0:
所以我无法以编程方式创建绑定。然而,我能够通过手动分配重定向来解决我收到的错误。即使使用此黑客,仍然缺乏体验,因为它返回到列表页面,但用户仍然必须在使用我构建的自定义页面成功创建绑定后单击“添加项目”来分配绑定。
这可能不是正确的方法,所以任何有助于让我走上正确轨道的帮助将不胜感激。
答案 0 :(得分:0)
为了使EditedObject
具有值,您必须使用EditedObjectAtribute
装饰页面,例如像这样:
[EditedObject("<custom.objecttype>", "<objectid>", ...)]
或自己设置对象:
int objectId = QueryHelper.GetInteger("objectid", 0);
EditedObject = SomeInfoProvider.GetSomeInfo(objectId);
在您的情况下,我建议您浏览页面上可用的查询参数,并使用它们来获取适当的对象。另外,确保将“JobCategoryId”传递给“New Job Title”对话框,以便创建绑定。
顺便说一句 - 对于问题很好的问题感到荣幸!