MVC数据模型属性 - 在服务器或客户端验证

时间:2018-03-24 05:45:35

标签: javascript asp.net-core-mvc

我正在创建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; }
}

1 个答案:

答案 0 :(得分:0)

两者 - 当您应用验证属性时,MVC会为您提供开箱即用的客户端和服务器端验证。

当从请求中读取值并设置模型属性的值时,ModelBinder完成服务器端验证。

要获得客户端验证,您需要做的就是在视图中包含jquery.validate.jsjquery.validate.unobtrusive.js脚本。

但是,客户端验证应该只被视为一个很好的奖励 - 这意味着您无需将数据发回服务器就会收到客户端错误消息。但是,恶意用户可以轻松绕过客户端验证并回发他们想要的任何数据,因此您必须始终实施服务器端验证。

通常,您的POST方法应包括

if (!ModelState.IsValid)
{
    return View(model);
}
.... // save and redirect