Dea*_*ane 3 sitecore web-forms-for-marketers
在我的自定义保存操作中,我遍历表单字段(AdaptedControlResult对象).任何表单字段都是DropList(来自任何来源 - 手动输入的值或项目查找)返回的字符串值为System.Collections.Generic.List`1[System.String]
现在,重要的是要知道,它不会返回实际的List.它返回一个带有该值的文字字符串.
所以,这个电话:
fields.GetEntryByName("MyFieldName").Value
Run Code Online (Sandbox Code Playgroud)
正在返回字符串:System.Collections.Generic.List`1[System.String].不是下拉列表的价值.一个字符串,说它是一个List<string>.
我已经确认表单的HTML正确呈现.我也手动检查了入站HttpContext.Current.Request.Form值...
HttpContext.Current.Request.Form["BGWnjkQqrE6w6sr31IgzrQ.Sections[5].Fields[0].Value"]
Run Code Online (Sandbox Code Playgroud)
这是下拉列表中正确选择的值(Sitecore ID).
因此,数据正确地输出到表单,并且入站Request.Form数据也是正确的.某处,Sitecore决定不将所选值填充到AdaptedControlResult对象中.
另外奇怪的是,对于DropList字段类型,所选值确实出现在Parameters属性中(莫名其妙).我只是检测到并使用它,但它不一致 - 例如,对于文本框字段类型,单词"multiline"出现在那里.
所有其他字段类型工作正常 - 我有几个文本输入字段和一些单选按钮列表.它只是DropList字段.
得到这个的诀窍是什么?
当在MVC中使用WFFM模块时,这是Sitecore中的已知错误.您可以在此知识库文章中找到更多详细信息 - 为WFFM MVC中的列表字段保存不正确的数据.
该修复程序列在kb文章中,取决于您使用的Sitecore的确切版本.很抱歉提供了一个仅限链接的答案,但修复程序需要多个步骤,并且文章中附有修复程序的下载.