FineUI 官方论坛

标题: 【已确认】表单提交后台模型二级属性验证问题 [打印本页]

作者: SNYG    时间: 2019-6-30 15:23
标题: 【已确认】表单提交后台模型二级属性验证问题
版本:FineUIMvc 5.5.0、FineUICore 5.5.0

问题描述:如果一个模型存在二级属性类,这个二级属性类中假设有两个使用 [Required] 标识的属性 A 和 B,其中只有属性 A 在页面显示,属性 B 不在页面显示(有时业务需要),在提交表单时使用 ModelState.IsValid 验证模型不合法,其原因是同时验证了这个模型的二级属性,也就是 A 和 B 都要验证,但是 B 没有显示到页面上,这就造成验证不合法。而 FineUIMvc 5.3.0 只验证当前模型的一级属性, 从 5.4.0之后就会验证所有的下级模型,这就造成表单处理比较麻烦,不可能把所有的下级必填属性都放到页面上。

代码已重现
作者: sanshi    时间: 2019-7-2 11:11
我专门写了一篇文章,来分析这个问题:
https://www.cnblogs.com/sanshi/p/11119340.html

作者: SNYG    时间: 2019-7-2 11:51
sanshi 发表于 2019-7-2 11:11
我专门写了一篇文章,来分析这个问题:
https://www.cnblogs.com/sanshi/p/11119340.html
...

使用绑定属性[Bind(Exclude = "StudentMajor")]确实可以对不需要验证的属性一一排除,假设模型中有多个类似的二级属性,我们在提交数据时也都排除了,如果后期模型结构发生变化,又增加或删除了二级属性,那还得在绑定属性中增加或排除他们,功能多了工作量可能比较大。能不能来个一劳永逸的办法,在FineUI中增加一个全局或者局部开关,提交数据时可以提交一级属性或全部。
作者: sanshi    时间: 2019-7-2 12:08
SNYG 发表于 2019-7-2 11:51
使用绑定属性确实可以对不需要验证的属性一一排除,假设模型中有多个类似的二级属性,我们在提交数据时也 ...

不行。你也看到了,模型绑定是ASP.NET MVC/Core做的事情,FineUI根本就没有代码触及这一块。




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4