此代码用于验证唯一字段:
型号:
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);
}
}
一切正常。问题是我还有多个其他类(即Category,FarlowCategories),其中Name
字段必须是唯一的,我还想以某种方式对所有这些字段重用此代码。我无法弄清楚如何将调用类名传递给IsProductNameExist
方法,以使其知道应根据调用类将其检入数据库的表...或者还有其他方法可以实现它。
答案 0 :(得分: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
。