我有一个名为VisitLabResult
的对象不应该有两个具有相同LabTestID and VisitID
的记录,所以为了强制进行此验证,我在LabTestID属性上创建了[remote]
验证,如下所示: -
[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
数据注释中AdditionalFields= "VisitID"
内的Remote
参数位于查询字符串中,用于调用CreateGet操作方法,查询字符串显示为{{1 }}
但上述情况根本不起作用;如果visitid和labtestid已经存在,则不会显示错误,所以我该如何解决这个问题?
答案 0 :(得分:0)
DataAnnotations更多的是确保数据本身可能有效。您不应该尝试使用DataAnnotation确定数据库中其余项的唯一性。如果您真的想沿着这条路走下去,我建议您考虑制作custom validators。
答案 1 :(得分:0)
字段VisitID是模型类的一部分(属性)吗?附加字段必须是您的模型类的一部分。例如,如果字段Id在您的模型中(LabTestID属性所在的位置),那么您就像这样注释LabTestID远程注释:
[Remote("checkexsistence", "VisitLabResult",AdditionalFields= "Id")]