我有一个项目,具有经典的3层结构:DataStore,BusinessLogic,Web-Frontend
在DataStore中我有一个模型(简化),例如ConfigModel.cs:
public class ConfigModel
{
[DataType(DataType.EmailAddress)]
public string DefaultSenderEmail { get; set; }
public IPAddress FallbackDNS { get; set; }
}
问题出现了:
根据实际的DataType或DataType属性以编程方式添加Validators的优雅方法是什么?
到目前为止,我已经考虑过几个答案,但没有找到令人满意的答案:
为参数添加[EmailAddress]验证属性:我不想复制,我不希望在我的DataStore层中引用任何MVC特定代码。
制作单独的ViewModel并使用AutoMapper:由于我的某些模型比这复杂得多,我讨厌制作特定的ViewModel。
谢谢!
答案 0 :(得分:1)
我也会考虑使用AutoMapper,但不能作为这个解决方案的答案。
答案 1 :(得分:0)
这不重复。 DataType用于不同的目的,验证是不同的事情。虽然它们可能听起来相同(特别是对于EmailAddress),但您不应该考虑将它们用作复制。此外,验证是针对非可空类型自动控制的 - 它们被标记为Required
。还会自动检查日期时间的有效格式。
当您使用不同的视图时,您肯定讨厌的是控制用户使用BindAttribute编辑域模型的哪些属性并控制同一模型上的不同验证。所以去使用ViewModels吧!使用Web应用程序所需的所有属性装饰它们,并使用AutoMapper
您还可以查看FluentValidation