【发布时间】:2021-06-02 18:25:10
【问题描述】:
我的 Blazor 应用程序在不同的组件中有两种表单。两种形式都使用相同的视图模型。尽管模型相同,但组件中显示的字段不同。例如。第一个组件的表单没有 UnitPrice 字段,但第二个有。我使用一个简单的验证:
[Required(ErrorMessage = "Unit Price is required.")]
[Range(0.01, double.MaxValue, ErrorMessage = "Unit Price must be greater than 0")]
public double UnitPrice { get; set; }
很遗憾,在显示并提交第一个表单时,对缺少的字段进行了验证,并且验证失败。有什么方法可以在不拆分模型或使用自定义验证的情况下做到这一点?
【问题讨论】:
-
老实说,这似乎是一种设计气味。可能有两个视图模型具有一个带有公共字段的接口,如果它确实是具有完全相同上下文的字段。
-
@BenSampica 你能澄清你的建议吗?
-
封装变化的内容。表单有公共字段,可以通过接口来表达。但是,每次使用该表单的上下文都不同,这在您的情况下是正确的,因为您有不同的字段。随着时间的推移和这种形式的不断发展,当您尝试在一个类中协调两个不同的用例时,事情会变得越来越难看。
-
@Ben Sampica 我明白了。你想把你的建议作为一个简单的例子,并让它成为我标记的答案吗?
标签: validation blazor-server-side