如您所知Validation
对于mvc网站来说非常重要。据我了解,您可以在四个级别进行验证。困惑从这里开始?我应该只使用ViewModel 验证,还是ViewModel 和模型验证,但不HTML 属性,或者可能是全部。使用所有验证方法会使代码变得复杂,难以阅读模型和 View 模型,但很可靠。仅使用 View 模型或模型验证是不安全的。想象一下,您正在构建一个至少有 300 - 500 个模型和 View 模型的项目。您的方法是什么?
HTML 属性
<input type="text" required>
ViewModel 数据注释
[Required(ErrorMessage="You must enter your name")]
public string Name {get; set;}
jQuery
$("#someForm").validate()
模型验证和数据注释
[Required(ErrorMessage="ENTER YOUR NAME")]
public string Name {get;set;}
或
public override IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//This is related to my architecture. Domain model inherits IValidateObject and overrides it. No big deal. This method raises when dbContext.SaveChange() method is in action
if(Name.Length == "Admin")
{
yield return new ValidationResult("You can't use a reseved name.", new[] {"Name"});
}
}
最佳答案
我建议进行客户端验证(HTML 和 Javascipt)并验证存储在数据库中的实体。
HTML 和 Javascipt 验证为用户提供快速反馈并改善用户在使用应用程序时的体验。 您永远不应该忘记,任何针对您网站的客户端输入都是不安全的,您不能信任该数据。
还应该完成实体验证,因为如果您有另一个 API,则必须确保数据库中没有存储无效数据。
关于c# - 要验证哪一个? Viewodel、Model、Html、jQuery 还是全部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32964483/