为什么 Web Forms for Marketers 不能在我的自定义保存操作中正确填充选定的 DropList 值?
Why doesn't Web Forms for Marketers correctly populate the selected DropList value in my custom save action?
在我的自定义保存操作中,我遍历了表单字段(AdaptedControlResult
对象)。任何作为 DropList 的表单字段(来自任何来源——手动输入的值,或项目查找)正在返回 System.Collections.Generic.List`1[System.String]
的字符串值
现在,重要的是要知道,它没有返回实际的列表。它返回具有该值的 文字字符串 。
所以,这个调用:
fields.GetEntryByName("MyFieldName").Value
正在返回字符串:System.Collections.Generic.List`1[System.String]
。不是下拉列表的值。一个字符串,表示它是 List<string>
.
我已确认表单的 HTML 呈现正确。我也手动检查了入站 HttpContext.Current.Request.Form
值...
HttpContext.Current.Request.Form["BGWnjkQqrE6w6sr31IgzrQ.Sections[5].Fields[0].Value"]
这是正确选择的下拉值(Sitecore ID)。
因此,数据正确输出到表单,入站 Request.Form
数据也是正确的。在某处,Sitecore 决定不将所选值填充到 AdaptedControlResult
对象中。
另外奇怪的是,对于 DropList 字段类型,所选值 确实 出现在 Parameters
属性 中(莫名其妙)。我只是检测并使用它,但它不一致——例如,对于文本框字段类型,单词 "multiline" 出现在那里。
所有其他字段类型都可以正常工作 -- 我有几个文本输入字段和一些单选按钮列表。它只是 DropList 字段。
获得这个的技巧是什么?
这是在 MVC 中使用 WFFM 模块时 Sitecore 中的一个已知错误。您可以在此知识库文章中找到更多详细信息 - Incorrect data is saved for list fields in WFFM MVC.
知识库文章中列出了修复程序,具体取决于您使用的 Sitecore 的确切版本。很抱歉只提供了一个 link 的答案,但修复需要多个步骤,修复的下载已附在文章中。
在我的自定义保存操作中,我遍历了表单字段(AdaptedControlResult
对象)。任何作为 DropList 的表单字段(来自任何来源——手动输入的值,或项目查找)正在返回 System.Collections.Generic.List`1[System.String]
现在,重要的是要知道,它没有返回实际的列表。它返回具有该值的 文字字符串 。
所以,这个调用:
fields.GetEntryByName("MyFieldName").Value
正在返回字符串:System.Collections.Generic.List`1[System.String]
。不是下拉列表的值。一个字符串,表示它是 List<string>
.
我已确认表单的 HTML 呈现正确。我也手动检查了入站 HttpContext.Current.Request.Form
值...
HttpContext.Current.Request.Form["BGWnjkQqrE6w6sr31IgzrQ.Sections[5].Fields[0].Value"]
这是正确选择的下拉值(Sitecore ID)。
因此,数据正确输出到表单,入站 Request.Form
数据也是正确的。在某处,Sitecore 决定不将所选值填充到 AdaptedControlResult
对象中。
另外奇怪的是,对于 DropList 字段类型,所选值 确实 出现在 Parameters
属性 中(莫名其妙)。我只是检测并使用它,但它不一致——例如,对于文本框字段类型,单词 "multiline" 出现在那里。
所有其他字段类型都可以正常工作 -- 我有几个文本输入字段和一些单选按钮列表。它只是 DropList 字段。
获得这个的技巧是什么?
这是在 MVC 中使用 WFFM 模块时 Sitecore 中的一个已知错误。您可以在此知识库文章中找到更多详细信息 - Incorrect data is saved for list fields in WFFM MVC.
知识库文章中列出了修复程序,具体取决于您使用的 Sitecore 的确切版本。很抱歉只提供了一个 link 的答案,但修复需要多个步骤,修复的下载已附在文章中。