一天学会MVC3之模型验证中的数据注解

https://www.codeproject.com/tips/780992/asp-net-mvc-custom-compare-data-annotation-with-cl

修改Album.cs代码如下:

   public class Album
    {
        [ScaffoldColumn(false)]
        public int AlbumId { get; set; }
        [DisplayName("Genre")]
        public int GenreId { get; set; }
        [DisplayName("Artist")]
        public int ArtistId { get; set; }
        [Required(ErrorMessage = "An Album Title is required")]
        [StringLength(160)]
        public string Title { get; set; }
        [Required(ErrorMessage = "Price is required")]
        [Range(0.01, 100.00,
        ErrorMessage = "Price must be between 0.01 and 100.00")]
        public decimal Price { get; set; }
        [DisplayName("Album Art URL")]
        [StringLength(1024)]
        public string AlbumArtUrl { get; set; }
        public virtual Genre Genre { get; set; }
        public virtual Artist Artist { get; set; }
    }


 public virtual Genre Genre这种写法主要是延迟加载

  [ScaffoldColumn(false)]

   public int AlbumId { get; set; } 这个[ScaffoldColumn(false)] 主要是在在编辑表单页面Edit.cshtml是否生成这个字段的隐藏域,为True就生成,为False就不生成

  为true的话就生成 @Html.HiddenFor(model => model.AlbumId),否则不生成。

  [Bind(Exclude = "AlbumId")]
   public class Album
  在上面代码里加了Bind,意思是当表单提交值的时候是否包含在Model中,  [Bind(Exclude = "AlbumId")]是排除。但是值得注意的是加了这个代码后,点击列表的编辑

然后在编辑表单点击提交修改后,会报错,因为Model里的AlbumId 被排除,然后控制器里的Action的Edit中的Model获取AlbumId老为0就报错了,

 解决方法是去掉  [Bind(Exclude = "AlbumId")]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值