我已经创建了一个自定义属性编辑器并将其用作宏参数。该属性呈现良好并显示应有的一切。
我遇到的问题是保存和反序列化属性数据。数据被保存为解析为html字符串的JSON。
我的JSON对象{test: "pass"}
被转换为{"test":"pass"}
。
直到提交,一切都是应该的,但是当按下提交按钮时,html字符串将传递给/umbraco/backoffice/UmbracoApi/Macro/GetMacroResultAsHtmlForEditor
端点。
以下是我package.manifest
的样子:
{
propertyEditors:
[
{
alias: "propertyAlias",
name: "Property Name",
icon: "icon-code",
isParameterEditor: true,
editor:
{
valueType: "JSON",
view: "path/to/editor"
}
}
],
javascript:
[
"path/to/controller"
]
}
我尝试使用valueType
属性,但这没有做任何事情......请求总是如上所示发送。
答案 0 :(得分:0)
我认为问题是宏参数作为属性嵌入到页面的HTML中,因此数据将始终是HTML编码的。
您是否将宏嵌入到富文本编辑器中?如果是这样,那肯定是个问题。
答案 1 :(得分:0)
根据Tim的回答,似乎在属性编辑器配置中没有太多可以完成的事情。
我决定解码宏中的参数值,然后将其反序列化为自定义模型。对于遇到此问题的其他人:
var parameterValue = Model.GetParameterValue<string>("paramAlias");
var parameterValueDecoded = WebUtility.HtmlDecode(parameterValue);
var modelObject = JsonConvert.DeserializeObject<MyCustomModel>(parameterValueDecoded);
不是最理想的解决方案,但它确实有效。