繁体   English   中英

多个类别的远程验证

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM