我创建了一个自定义属性编辑器并将其用作宏参数。该物业呈现得很好,并显示一切。
我遇到的问题是属性数据的保存和反序列化。数据被保存为解析为 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
属性,但这没有任何作用......请求始终如上所示发送。
我认为问题是宏参数作为属性嵌入在页面的 HTML 中,因此数据将始终是 HTML 编码的。
您是否在富文本编辑器中嵌入宏?如果是这样,那肯定是问题所在。
根据 Tim 的回答,在属性编辑器配置中似乎没有太多可以做的事情。
我决定在宏中解码参数值,然后将其反序列化为自定义模型。对于遇到此问题的其他任何人:
var parameterValue = Model.GetParameterValue<string>("paramAlias");
var parameterValueDecoded = WebUtility.HtmlDecode(parameterValue);
var modelObject = JsonConvert.DeserializeObject<MyCustomModel>(parameterValueDecoded);
不是最佳解决方案,但它有效。