Asp.net mvc ASP MVC数据批注和数据库空值
我有一个asp mvc 5项目,并使用代码优先和数据迁移创建了数据库 这是我目前的产品POCO类Asp.net mvc ASP MVC数据批注和数据库空值,asp.net-mvc,data-annotations,Asp.net Mvc,Data Annotations,我有一个asp mvc 5项目,并使用代码优先和数据迁移创建了数据库 这是我目前的产品POCO类 public class Product { [Key] public int ProductId { get; set; } [Required(ErrorMessage = "Please add a product name.")] [StringLength(50)] public string Name { get; set; } publ
public class Product
{
[Key]
public int ProductId { get; set; }
[Required(ErrorMessage = "Please add a product name.")]
[StringLength(50)]
public string Name { get; set; }
public string Code { get; set; }
[DataType(DataType.MultilineText)]
public string Description { get; set; }
public string Features { get; set; }
public decimal Price { get; set; }
public bool? Promotion { get; set; }
[Display(Name = "Category")]
public int CategoryId { get; set; }
public virtual Category Category { get; set; }
[Display(Name = "Brand")]
public int BrandId { get; set; }
public virtual Brand Brand { get; set; }
public byte[] ImageData { get; set; }
[HiddenInput(DisplayValue = false)]
public string ImageMimeType { get; set; }
}
在数据库中,唯一不为null的值是主键和名称。我对价格、类别和品牌字段有问题。在表单中,所有3个仍然是“必需的”,并且ModelState没有与jqueryval.js一起传递,这表明需要添加这些值
如图所示,表单将首先显示需要添加的price&name值。添加这些值后,单击“创建”。然后我才被要求为品牌和品类增加价值。如下图所示
似乎由于某种原因,品牌和类别在第一次单击时没有被验证,但除此之外,这些值不应该被添加,因为它们在数据库中是空值,但是模型仍然要求添加它们。只是想知道是否有人对此有任何见解。是否可以添加一个类似的数据注释
[Required(this = false)]
来覆盖这个
还有,我怎样才能在第一次提交时确认品牌和类别
谢谢。您需要将想要的属性设置为可空类型的可选属性
public decimal? Price { get; set; }
public int? CategoryId { get; set; }
public int? BrandId { get; set; }
这样,验证程序将不会触发。。。如果你想一想,这是有道理的。。。int的默认值是0。。。但实际上您希望数据库中有空字符串。要允许空字符串,只需添加这些注释即可
[DisplayFormat(ConvertEmptyStringToNull = false)]
[Required(AllowEmptyStrings =true)]