在多个类远程验证

问题描述 投票:1回答:1

此代码是用来验证一个独特的领域:

模型:

public class SubCategory
    {
        [Key]
        public int ID { get; set; }

        [StringLength(450)]

        [Remote("IsProductNameExist", "Products", AdditionalFields = "ID",
                ErrorMessage = "Product name already exists")]
        public virtual string Name { get; set; }
        public virtual string ParentName { get; set; }
    }

控制器:

public JsonResult IsProductNameExist(string Name, int? ID)
    {
        var validateName = db.SubCategories.FirstOrDefault
                            (x => x.Name == Name && x.ID != ID);
        if (validateName != null)
        {
            return Json(false, JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json(true, JsonRequestBehavior.AllowGet);
        }
    }

所有这一切工作的罚款。问题是,我已经在那里Name领域都需要是唯一的多个其他类(即,类别,FurtherCategories),我不知怎么想重用此代码对所有这些领域也是如此。我想不通我怎么能通过调用类名IsProductNameExist方法为它知道它应该在对调用级数据库检查该表...或者有没有其他的方法可以让我实现它。

c# asp.net-mvc
1个回答
0
投票

您可以尝试使用象下面这样:

public JsonResult IsProductNameExist(DbSet<T> dbSet,string Name, int? ID) where T : class, new()
    {
        var validateName = dbSet.FirstOrDefault
                            (x => x.Name == Name && x.ID != ID);
        if (validateName != null)
        {
            return Json(false, JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json(true, JsonRequestBehavior.AllowGet);
        }
    }

你可以在上面的方法一样

public void check(string Name, int? ID)
{
    var tableNameCheck1= IsProductNameExist(_dbContext.SubCategories, Name, ID);
    var tableNameCheck2= IsProductNameExist(_dbContext.Categories, Name, ID);       
}

其中dbSet是你dbcontext.TableName你可以传递。

© www.soinside.com 2019 - 2024. All rights reserved.