在Umbraco中添加依赖于另一个的自定义属性

时间:2013-01-24 11:08:08

标签: customization umbraco

请求

我想在我们公司的部门增加会员,但我们公司有更多的办公室,每个办公室都有自己的部门,所以我们需要先组织,然后再尝试将每个会员分配到其部门,这样他们才有访问自己部门的权限。

部门概述为Umbraco内容:

Root Node
-Office 1
-- Department1.1
-- Department1.2
-Office 2
-- Department 2.1
-Office 3
-- Department 3.1
-- Department 3.2
-- Department 3.3

现在,如果我添加一个用户,我想要一个属性来选择办公室而另一个属性来选择部门。

可能的解决方案

在这里和那里检查,我已经看到我可以使用Umbraco中的 UltimatePicker 类型创建Office属性,创建链接到父节点的自定义数据类型,然后是我的MemberType中的属性。这将显示“根节点”下的办公室,并将该成员链接到其中一个。

现在,为了使我看到的部门属性可以通过某种方式使用自定义手动编码属性,添加用户控件并使用它来动态显示办公室孩子(我还没试过,我'理论化。)

但我担心第二个属性将依赖于第一个属性,当我尝试在我的usercontrol中创建我的自定义属性实现 umbraco.editorControls.userControlGrapper.IUsercontrolDataEditor 时允许我保存一个值,而不是两个值。这有意义,因为它应该是A属性,而不是一堆属性。

我的问题

现在,拥有这2个自定义属性的最佳方法是什么,并确保如果我更换办公室,部门也会刷新?

目前最好的疯狂想法

到目前为止,我只能想象创建2个用户控件,每个属性对应一个,并在每次更新办公室时手动清理部门,但我不知道这是否可行(我能否真正动态获取部门) ?我可以清理dep。属性FROM office属性usercontrol吗?)我希望将它们放在一起以简化代码。

1 个答案:

答案 0 :(得分:1)

如果关系是关键的,并且您需要阻止用户意外选择不属于某个办公室的部门,那么您可以创建一个包含两个下拉菜单的用户控件。第一个菜单显示办公室,第二个菜单仅在办公室选择后填充(最好是通过ajax调用)。

使用umbraco api检索办公室和部门的代码相对简单。

然后,usercontrol可以将每个id的id保存为xml或逗号分隔列表。

或者,您可以只允许用户选择部门,并选择部门隐含办公室。您可以使用uComponent的多节点选取器,并将节点选择过滤为仅部门文档类型。然后,开销就在UI代码中,您必须从部门处理Office。

要解决此问题,您可以拥有一个标签属性,只需存储部门办公室的ID即可。然后可以使用OnSave事件处理程序保存Office ID。