[英]Remote Validation in multiple classes
此代码用于验证唯一字段:
模型:
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
方法,以使其知道应该根据调用类将哪个表检入数据库中……或者还有其他任何方法可以实现。
您可以尝试如下使用:
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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.