我正在创建MVC Core项目。
我可以使用服务器端或客户端验证。
我应该在客户端进行模型属性验证吗? MSDN Model Validation。因此,我会将需要,长度,显示名称等属性(下面的示例模型)转换为Javascript和json等。如果我使用html / javascript客户端验证,我应该删除下面的模型属性吗?
我读取服务器端仅用于安全性,而且需要访问数据库。 在许多情况下,客户端更快。public class Movie
{
public int ID { get; set; }
[Required]
public string Title { get; set; }
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }
[Required]
public string Genre { get; set; }
[Range(1, 100)]
[DataType(DataType.Currency)]
public decimal Price { get; set; }
[StringLength(5)]
public string Rating { get; set; }
}
答案 0 :(得分:0)
两者 - 当您应用验证属性时,MVC会为您提供开箱即用的客户端和服务器端验证。
当从请求中读取值并设置模型属性的值时,ModelBinder
完成服务器端验证。
要获得客户端验证,您需要做的就是在视图中包含jquery.validate.js
和jquery.validate.unobtrusive.js
脚本。
但是,客户端验证应该只被视为一个很好的奖励 - 这意味着您无需将数据发回服务器就会收到客户端错误消息。但是,恶意用户可以轻松绕过客户端验证并回发他们想要的任何数据,因此您必须始终实施服务器端验证。
通常,您的POST方法应包括
if (!ModelState.IsValid)
{
return View(model);
}
.... // save and redirect