此代码是用来验证一个独特的领域:
模型:
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
方法为它知道它应该在对调用级数据库检查该表...或者有没有其他的方法可以让我实现它。
您可以尝试使用象下面这样:
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
你可以传递。