ASP.Net Core MVC - 自定义验证

Posted

技术标签:

【中文标题】ASP.Net Core MVC - 自定义验证【英文标题】:ASP.Net Core MVC - Custom validation 【发布时间】:2020-06-10 16:29:19 【问题描述】:

我在 asp.net 上使用 Code First,我有以下课程:

public class Producto

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid ProductoId  get; set; 
    [Remote(action: "VerifySku", controller: "Producto", ErrorMessage = "El sku ya está asignado a un producto")]
    [DisplayName("SKU")]
    public string Sku  get; set; 
    [Required(ErrorMessage = "Seleccione categoría")]
    [DisplayName("Categoria")]
    public Guid SubCategoriaProductoId  get; set; 
    [DisplayName("Categoria")]
    public SubCategoriaProducto SubCategoriaProducto  get; set; 
    public string Marca  get; set; 
    [Required(ErrorMessage = "Ingrese nombre")]
    [Remote(action: "VerifyName", controller: "Producto", ErrorMessage = "El producto ya existe")]
    public string Nombre  get; set; 
    public string Detalle  get; set; 
    [Required(ErrorMessage = "Ingrese precio")]
    public int Precio  get; set; 
    public bool PorEncargo  get; set; 
    [Remote(action: "VerifyStock", controller: "Producto", AdditionalFields = nameof(PorEncargo))]
    public int Stock  get; set; 
    [DefaultValue(1)]
    public int EstaActivo  get; set; 
    public virtual ICollection<ImagenProducto> Imagenes  get; set; 

我需要添加一个自定义验证,只要 PorEncargo 字段为 false,您就必须在其中 Require stock。 我在 ASP.Net Core 中没有找到任何方法。

【问题讨论】:

【参考方案1】:

我需要添加一个自定义验证,只要 PorEncargo 字段为 false,您就必须在其中 Require stock。

public int Stock  get; set; 

从this doc,您可以发现.NET Core 3.0 及更高版本中的验证系统将不可为空的参数或绑定属性视为具有[Required] 属性。

通常,如果int 类型属性(例如Stock)的输入大于0,而不是null,则我们有效。

【讨论】:

以上是关于ASP.Net Core MVC - 自定义验证的主要内容,如果未能解决你的问题,请参考以下文章

在 Asp.net Core MVC 中定义自定义客户端验证规则

从 ASP.NET Core 1.1 MVC 迁移到 2.0 后,自定义 cookie 身份验证不起作用

带有 Windows 身份验证的 ASP.NET Core 2.1 自定义 RoleProvider

如何从 ASP.NET Core 2.0 中的自定义中间件请求身份验证

在 ASP.NET Core MVC 中将自定义查询参数添加到操作 URL

asp.net core2 mvc 基础教程--服务注册和管道