You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 8 MVC子类属性POST未回传及ModelState验证失效问题

ASP.NET Core 8 MVC子类属性绑定失败及验证不触发问题解决

问题根源

  • ASP.NET Core MVC的模型绑定系统仅处理带get/set访问器的属性,你ViewModel中的subClass1是字段(无get/set),导致其下的user.email_addr无法被绑定到模型实例。
  • ModelState验证仅扫描属性的子成员,字段的子属性不会触发任何验证逻辑。

解决方案

将ViewModel中的subClass1字段改为属性,添加get/set访问器即可:

public class ViewModel
{
    public string test { get; set; } = "test value";
    // 从字段改为属性,添加get/set访问器
    public User subClass1 { get; set; } = new User();
}

User和UserL类无需修改,保持原有结构即可。

效果说明

修改后:

  1. HTTP Post请求中的subClass1.user.email_addr值会正确绑定到ViewModel实例的对应属性。
  2. [CustomEAttribute]的验证逻辑会正常触发,ModelState会包含该属性的验证结果。

你之前看到IFormCollection中有对应值,是因为IFormCollection直接读取表单提交的键值对,不依赖模型绑定的属性规则,但模型绑定系统只会处理带有get/set的属性成员。

内容的提问来源于stack exchange,提问作者narue1992

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 07:16:02