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

时间:2017-09-27 18:19:26

标签: asp.net asp.net-mvc asp.net-mvc-5

您好我有2个表名tblGrouptblSubGrouptblGroupGroupId这是主要的,tblSubGroupGroupid是外国的键。 以下是为他们生成的模型

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; }
}

现在删除From GroupTable的记录时,它会给出问题。相反,我需要validate一条消息“此记录与另一个表或实体绑定。因此无法删除”。我需要展示这种信息。

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

1 个答案:

答案 0 :(得分:1)

由于您需要使用数据库进行验证,因此将此类验证移至服务器。

[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()