Umbraco 7 自定义 属性 编辑器 valueType 未被使用
Umbraco 7 custom property editor valueType not being used
我创建了一个自定义 属性 编辑器并将其用作宏参数。 属性 渲染良好并显示应有的一切。
我遇到的问题是 属性 数据的保存和反序列化。数据被保存为 JSON 解析为 html 字符串。
我的 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);
不是最佳解决方案,但它有效。
我创建了一个自定义 属性 编辑器并将其用作宏参数。 属性 渲染良好并显示应有的一切。
我遇到的问题是 属性 数据的保存和反序列化。数据被保存为 JSON 解析为 html 字符串。
我的 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);
不是最佳解决方案,但它有效。