在我的自定义保存操作中,我遍历表单字段(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
属性中(莫名其妙地)。我只是检测到并使用它,但它不一致 - 例如,对于文本框字段类型,单词&#34; multiline&#34;出现在那里。
所有其他字段类型都可以正常工作 - 我有几个文本输入字段和一些单选按钮列表。它只是DropList字段。
获得这个的诀窍是什么?
答案 0 :(得分:5)
在MVC中使用WFFM模块时,这是Sitecore中的一个已知错误。您可以在此知识库文章中找到更多详细信息 - Incorrect data is saved for list fields in WFFM MVC。
此修复程序列在kb文章中,具体取决于您使用的Sitecore的确切版本。很抱歉只提供了一个链接答案,但修复程序需要多个步骤,并且文章中附有修复程序的下载。