代码之家  ›  专栏  ›  技术社区  ›  user2977985

如何在MVC5中处理关系PK和FK的验证

  •  1
  • user2977985  · 技术社区  · 8 年前

    tblGroup tblSubGroup tblGroup公司 GroupId TBL子组 Groupid 这是外键。 下面是为他们生成的模型

    tblGroup模型

    public partial class tblGroup
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public tblGroup()
        {
            this.tblSubGroups = new HashSet<tblSubGroup>();
        }
    
        public int GroupID { get; set; }
        [Required(ErrorMessage = "Group Name is Required")]
        public string Title { get; set; }
    
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<tblSubGroup> tblSubGroups { get; set; }
    }
    

    tblSubGroup模型

     public partial class tblSubGroup
    {
        public int SubGroupID { get; set; }
    
        [Display(Name = "tblGroup")]
        public int GroupID { get; set; }
        [Required(ErrorMessage = "SubGroup Name is Required")]
        public string Title { get; set; }
    
        public virtual tblGroup tblGroup { get; set; }
    }
    

    现在从中删除记录 GroupTable validate “此记录与另一个表或实体绑定,因此无法删除”的消息。我需要展示这种信息。

    因为我是新手,我不知道这件事是否可能

    1 回复  |  直到 8 年前
        1
  •  1
  •   Jasen    8 年前

    由于需要使用数据库进行验证,因此将这种类型的验证移动到服务器。

    [HttpPost]
    public ActionResult Delete(Group group)
    {
        var grp = db.Group.FirstOrDefault(g => g.Id == group.Id);
    
        if (HasSubGroups(grp))
        {
            ModelState.AddError("DeleteValidation", "Cannot delete while sub-groups exists");
            return View(group);
        }
    
        // delete normally ... 
    }
    

    @Html.ValidationSummary()
    
    推荐文章