umbraco如何以编程方式更新多个prevalue

时间:2013-06-26 10:13:27

标签: umbraco member multiple-choice customproperty

我有一个具有自定义属性的成员类型 - 让我们将其命名为图书 - 数据类型复选框 - 因此可以进行多项选择。

现在,我正在尝试使用 books 的新值以编程方式更新此成员。在customxml中它以cdata形式出现,我将值传递为

umbraco.cms.businesslogic.member.Member member =  umbraco.cms.businesslogic.member.Member.GetMemberFromEmail(email);
member.SetProperty("memberBooks", booksValue);
member.Save();

其中'booksValue'是一个用逗号分隔的值字符串 - 因为它就是它在contentXml中的显示方式。

它不起作用。

问题是 - 如何使用新的多个值更新成员属性/ xml?

2 个答案:

答案 0 :(得分:3)

我已经解决了这个问题。

两个

member.getProperty(“memberBooks”).Value = booksValue;

member.SetProperty("memberBooks", booksValue);

工作

我只是传递错误的值。

在contentXml中,它们显示为值,但实际上我需要使用ids更新属性,因此如果数据类型是复选框列表且值如下:

1 - 书

2 - booko

3 - booki

然后在contentXml中显示为“book,booko,booki”列表,但是以编程方式更新它我必须通过:“1,2,3”到该属性。

所以它应该是:

member.SetProperty("memberBooks", "1,2,3");

而不是:

member.SetProperty("memberBooks", "book,booko,booki");

我希望它可以帮助其他人解决同样的问题。

答案 1 :(得分:0)

这是你需要做的:

umbraco.cms.businesslogic.member.Member member = umbraco.cms.businesslogic.member.Member.GetMemberFromEmail(email);
member.getProperty(“memberBooks”).Value = booksValue;
member.Save();

我希望这应该有用。我没有尝试过很长时间,但这就是我使用它的方式。