首页 新闻 会员 周边 捐助

.net core2.2升级后绑定前台传过来的list模型使用自定义绑定会死循环

0
悬赏园豆:50 [已解决问题] 解决于 2018-12-08 17:58

action:

model:

自定义验证:

现在BindModelAsync这个方法在2.2版本死循环.2.1中不会
有大神知道怎么回事吗 不胜感激

蛋淡的忧伤的主页 蛋淡的忧伤 | 初学一级 | 园豆:154
提问于:2018-12-07 14:14

"死循环"的表现是什么?

dudu 6年前

@dudu: 站长好,就是一直进入BindModelAsync 自定义模型绑定的实现方法

蛋淡的忧伤 6年前
< >
分享
最佳答案
0

你确定 2.1 不会死循环?

先说解决方法:

  • 1
    POST数据的时候,带上索引:
Addresses[0].City = "city0"
Addresses[0].Street = "street0"
Addresses.index = "0"
Addresses[1].City = "city1"
Addresses[1].Street = "street1"
Addresses.index = "1"

这样既不会陷入无限循环(其实是有限:cry),也能按预期绑定数据。
你可以在前端页面表单里为每一组Address都加上一个隐藏域 index
简单快速,不过可能不是你想要的

  • 2
    你的 Address 类中的属性,不能全部都标记你的自定义 ModelBinder 。
    就是说,你可以增加一个属性,比如 Id ,这个 Id 不使用你的 Binder ,这样就可以避免陷入循环。

不过你 POST 的数据里必须要有一个 Addresses[n].Id ,否则啥也绑定不到。

  • 3
    应该有更正确的方法,以及造成这种情况的原因,我还在看,回头再说。
收获园豆:50
Dr.Yao | 菜鸟二级 |园豆:252 | 2018-12-08 10:39

这排版真是惊为天人

Dr.Yao | 园豆:252 (菜鸟二级) | 2018-12-08 10:45

牛逼 牛逼 好用了

蛋淡的忧伤 | 园豆:154 (初学一级) | 2018-12-08 17:58
其他回答(2)
0

可以试一试 拉姆达表达式

recordman | 园豆:10 (初学一级) | 2018-12-07 15:54

so..跟拉姆达啥关系

支持(0) 反对(0) 蛋淡的忧伤 | 园豆:154 (初学一级) | 2018-12-07 16:25
0

建议参考 ASP.NET Core 2.2 帮助文档 Custom Model Binding in ASP.NET Core 修改你的代码

dudu | 园豆:29570 (高人七级) | 2018-12-07 18:01

站长,我参考这个了.同样的代码 我就是升级了.net core版本就出现模型绑定问题了,,,

支持(0) 反对(0) 蛋淡的忧伤 | 园豆:154 (初学一级) | 2018-12-07 18:06

@蛋淡的忧伤: Startup 中如果有 .SetCompatibilityVersion(CompatibilityVersion.Version_2_1) ,去掉试试

支持(0) 反对(0) dudu | 园豆:29570 (高人七级) | 2018-12-07 18:14

@dudu: .SetCompatibilityVersion(CompatibilityVersion.Version_2_2) 我用的是这个...去掉也没用

支持(0) 反对(0) 蛋淡的忧伤 | 园豆:154 (初学一级) | 2018-12-07 19:31

@蛋淡的忧伤: github 上提交 bug 吧 https://github.com/aspnet/AspNetCore/issues

支持(0) 反对(0) dudu | 园豆:29570 (高人七级) | 2018-12-07 21:12

@dudu: 谢谢站长

支持(0) 反对(0) 蛋淡的忧伤 | 园豆:154 (初学一级) | 2018-12-07 21:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册