![]() |
1
3
dataAnnotation属性是关于验证输入并向最终用户提供UI反馈的。这是他们唯一的预期用途。我对UI对象和业务对象使用不同的验证策略,因此DA验证属性最终只会出现在向用户显示的模型上。 |
![]() |
2
2
这可能不合适,但如果您刚将验证规则/注释从模型移动到视图模型,会怎么样?在我参与过的一些项目中,我们选择阻止视图访问通过其相应的视图模型公开的信息以外的任何内容。由于所有数据交互都将通过ViewModel执行,因此不需要对模型对象进行验证。 此参数的反作用是您可以轻松地复制某些验证规则,因为不同的视图模型可能与相同的模型交互。在这种情况下,简单地将模型声明为ViewModel上公开的属性可能是有意义的。对于回发,他们可以接受模型作为参数,从而允许ModelBinder基础结构处理请求。在这种情况下,如果modelstate.isvalid为false,则可以在重新显示视图之前将该属性重新分配给视图模型。 我建议将注释移动到视图模型中。这是有意义的,因为许多视图是a)多个模型组合的结果,或b)模型数据的子集。 |
![]() |
3
2
事实证明,automapper可以自动地为我们做这件事,这是最好的情况。
automapper用户:是否将验证属性传输到视图模型?
我还没来得及在那里尝试那些建议的解决方案,但我打算很快。 (克罗斯也把这个贴在了我的(重复)问题上)。 |
![]() |
4
0
也许我们根本不应该使用视图模型? 定义模型层实体的验证规则。 |
![]() |
5
0
我也考虑了一段时间了。我完全理解布拉德的回答。但是,假设我想使用另一个验证框架,该框架适用于同时注释域实体和视图模型。 我能在纸上找到的唯一一个仍然可以使用属性的解决方案是创建另一个属性,该属性“指向”正在视图模型中镜像的域实体的属性。下面是一个例子:
可以扩展XVAL这样的框架来处理这个新属性,并在依赖类的属性上运行验证属性,但使用视图模型的属性值。我只是没时间再充实一下。 有什么想法吗? |
![]() |
George Alexander · 类似电报的用户名的Regex 1 年前 |
![]() |
Aliaksei · 保存前进行WebFlux检查 3 年前 |
![]() |
Nimet · 如何在regex密码模式中转义* 3 年前 |
![]() |
Jee · PowerShell输入验证-输入不应为所有数字 7 年前 |
![]() |
James · Django使用RangeWidget验证表单 7 年前 |