6

我为我的 Umbraco 站点的后端创建了一个自定义用户控件,它允许管理员快速更新节点上的某些字段,而无需浏览内容树。

到目前为止,我的代码按预期工作:我可以毫无问题地更新简单的真/假属性。但是,现在我正在尝试更新自定义数据类型的属性,但遇到了困难。

数据类型本身只是一个简单的下拉列表,列出了一系列可用性状态,即。可用、不可用、已售出和已保留。数据类型存储文本值。

这是我拥有的代码,可让我更新我的真/假属性:

public void ChangeInteractiveStatus(string nodeId, bool chkValue)
{
    var cs = ApplicationContext.Current.Services.ContentService;
    var apartment = cs.GetById(Convert.ToInt32(nodeId));
    apartment.SetValue("displayOnInteractive", chkValue);
    cs.SaveAndPublish(apartment);
}

这绝对可以正常工作,因为此属性的数据类型是常规的真/假数据类型。

这是我用来更改自定义下拉列表数据类型值的代码:

public void ChangeAvailabilityStatus(string nodeId, string status)
{
    var cs = ApplicationContext.Current.Services.ContentService;
    var apartment = cs.GetById(Convert.ToInt32(nodeId));            
    apartment.SetValue("status", status);
    cs.SaveAndPublish(apartment);
}

如您所见,差异很小,但此代码不起作用。

为了检查使用上述代码更新属性时发生的情况,我检查了 umbraco.config 文件,结果发现有问题的属性显示如下:

<status><![CDATA[]]></status>

但是,当我更改内容树中的值(不使用我的管理控件)时,值会正确保存为:

<status><![CDATA[Sold]]></status>

因此,无论出于何种原因,当我尝试更新它被拒绝的值时,我无法弄清楚原因。

仅供参考,我尝试将值输入为:

"<![CDATA[" + status + "]]>"

然而这并没有什么不同。

有谁知道我该如何解决这个问题?如何让属性正确更新?

谢谢

4

1 回答 1

3

好的,我已经弄清楚问题出在哪里了。似乎这些值存储为名称-值对,因此存储在数据库中的实际值是一个整数。一旦我更新了代码以插入整数 id,它就按预期工作了!万岁。

于 2013-09-20T09:59:17.773 回答