我为Umbraco站点的后端创建了一个自定义用户控件,允许管理员快速更新节点上的某些字段,而无需浏览内容树.
到目前为止,我的代码正在按预期工作:我可以毫无问题地更新简单的true/false属性.但是现在我正在尝试更新一个自定义数据类型的属性,我遇到了困难.
数据类型本身只是一个简单的下拉列表,列出了一系列可用性状态,即.可用,不可用,已售出和保留.数据类型存储文本值.
这是我的代码,它允许我更新我的真/假属性:
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);
}
Run Code Online (Sandbox Code Playgroud)
这非常正常,因为此属性的数据类型是常规的真/假数据类型.
这是我用来更改自定义下拉列表数据类型值的代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的那样,差别很小,但这段代码无效.
为了检查在使用上面的代码更新属性时发生了什么,我检查了umbraco.config文件,发现有问题的属性显示如下:
<status><![CDATA[]]></status>
Run Code Online (Sandbox Code Playgroud)
但是,当我更改内容树中的值(不使用我的管理控件)时,该值将正确保存为:
<status><![CDATA[Sold]]></status>
Run Code Online (Sandbox Code Playgroud)
所以无论出于何种原因,当我尝试更新它被拒绝的价值时,我无法解决原因.
仅供参考我尝试输入以下值:
"<![CDATA[" + status + "]]>"
Run Code Online (Sandbox Code Playgroud)
然而这没有任何区别.
有谁知道我怎么解决这个问题?如何才能正确更新属性?
谢谢