编辑器模板将列表转换为字符串并返回

本文关键字:字符 字符串 串并 返回 转换 列表 编辑器 | 更新日期: 2023-09-27 18:21:44

我有一个对象列表的编辑器模板。这为JQuery令牌输入提供了动力。因此,编辑器模板创建了一个要由JQuery插件加载的Javascript数组。

当我再次提交该表单时,POST数据显示为逗号分隔的字符串。所以不绑定并抛出一个无法强制转换的异常。

对于这样的场景,将数据返回到我的控制器并具有有效的ViewModel的最佳实践是什么?

编辑器模板

@model List<SEISMatch.DAL.Entities.Region>
    <script type="text/javascript">
        var existingRegions = [
            @if(Model!=null){
                foreach(var region in Model){
                    if(region!=null){
                        @:{ id: @region.Id, name: "@region.Title" },
                    }
                }
            }
        ];
    </script>
    <input type="text" id="regionselector" name="@ViewData.TemplateInfo.GetFullHtmlFieldName("")">

有一个http://loopj.com/jquery-tokeninput/它将"区域选择器"输入转换为AJAX支持的令牌建议输入。该输入的值以区域ID的CSV字符串结束。

所有这些都是正确的。

提交表单时,它会尝试从输入中转换字符串。进入列表并失败。出现无法将字符串转换为"Region"错误。

编辑器模板将列表转换为字符串并返回

最终创建了我自己的模型绑定器,但在属性级别。按照SO的回答:https://stackoverflow.com/a/12683210/1321662