0

我有一个名为的对象VisitLabResult,它不应该有两条相同的记录LabTestID and VisitID,所以为了强制进行此验证,我[remote]在 LabTestID 属性上创建了一个验证,如下所示:-

        [Required]
        [Remote("checkexsistence", "VisitLabResult",AdditionalFields= "VisitID")]
        public int LabTestID { get; set; }

这将调用以下操作方法:-

public JsonResult checkexsistence(int LabTestID, int VisitID)
        {

    var result = repository.checkexsistence(LabTestID, VisitID);
    if (result == null)
    {

        var type = true;
        return Json(type, JsonRequestBehavior.AllowGet);

    }
    else {
        var type = false;
        return Json(type, JsonRequestBehavior.AllowGet);
    }
}

并且存储库方法是:-

 public VisitLabResult checkexsistence(int labtestid, int visitid =20)
            {
                return (from vlr in entities.VisitLabResults
                       where (vlr.VisitID == visitid && vlr.LabTestID == labtestid)
                       select vlr).FirstOrDefault();}

目前,在数据注释内部提到的visitid参数是在查询字符串中找到的,用于调用 CreateGet 操作方法,查询字符串看起来像。AdditionalFields= "VisitID"Remote/VisitLabResult/Create?visitid=20

但是以上根本不起作用;如果visitid 和labtestid 已经存在,则不会显示错误,那么我该如何解决?

4

2 回答 2

0

DataAnnotations 更多的是确保数据本身可能有效。您不应该尝试使用 DataAnnotation 确定数据库中其余项目的唯一性。如果您真的想走这条路,我建议您考虑制作自定义验证器

于 2012-04-30T02:27:34.553 回答
0

字段 VisitID 是模型类的一部分(属性)吗?附加字段必须是您的模型类的一部分。例如,如果字段 Id 在您的模型中(LabTestID 属性在哪里),那么您可以像这样喊注 LabTestID 远程:

[Remote("checkexsistence", "VisitLabResult",AdditionalFields= "Id")]
于 2014-01-21T15:01:44.237 回答