Item.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
  2. using Microsoft.EntityFrameworkCore;
  3. using System.ComponentModel;
  4. using System.ComponentModel.DataAnnotations;
  5. using System.ComponentModel.DataAnnotations.Schema;
  6. namespace bitforum.Models.Page.Banner
  7. {
  8. [Index(nameof(Order), Name = "IX_BannerItem_Order")]
  9. [Index(nameof(IsActive), Name = "IX_BannerItem_IsActive")]
  10. public class BannerItem
  11. {
  12. [Key]
  13. public int ID { get; set; }
  14. [Required]
  15. [ForeignKey("BannerPosition")]
  16. [DisplayName("배너 위치ID")]
  17. public int PositionID { get; set; }
  18. [Required]
  19. [DisplayName("배너 명")]
  20. [DataType(DataType.Text)]
  21. [MaxLength(255)]
  22. public string Subject { get; set; }
  23. [DisplayName("이미지")]
  24. [RegularExpression(@"\.(jpg|jpeg|png|gif)$", ErrorMessage = "이미지 파일은 jpg, jpeg, png, gif 형식이어야 합니다.")]
  25. [MaxLength(1024)]
  26. public string? Image { get; set; } = null;
  27. [DisplayName("가로 크기")]
  28. [Range(1, int.MaxValue, ErrorMessage = "숫자는 1 이상이어야 합니다.")]
  29. public int Width { get; set; } = 0;
  30. [DisplayName("세로 크기")]
  31. [Range(1, int.MaxValue, ErrorMessage = "숫자는 1 이상이어야 합니다.")]
  32. public int Height { get; set; } = 0;
  33. [DisplayName("주소")]
  34. [DataType(DataType.Url)]
  35. [MaxLength(255)]
  36. public string? Link { get; set; } = null;
  37. [Required]
  38. [DisplayName("순서")]
  39. public int Order { get; set; } = 0;
  40. [Required]
  41. [DisplayName("사용 여부")]
  42. public bool IsActive { get; set; } = false;
  43. [DisplayName("사용 기간 - 시작")]
  44. [DataType(DataType.DateTime)]
  45. public DateTime? StartAt { get; set; } = null;
  46. [DisplayName("사용 기간 - 종료")]
  47. [DataType(DataType.DateTime)]
  48. public DateTime? EndAt { get; set; } = null;
  49. [DisplayName("조회 수")]
  50. public int Views { get; set; } = 0;
  51. [DisplayName("수정일시")]
  52. [DataType(DataType.DateTime)]
  53. public DateTime? UpdatedAt { get; set; } = null;
  54. [DisplayName("등록일시")]
  55. [DataType(DataType.DateTime)]
  56. public DateTime? CreatedAt { get; set; } = null;
  57. [ValidateNever]
  58. public virtual BannerPosition? BannerPosition { get; set; } = null;
  59. }
  60. }