对模型中的2个不同属性进行相同的远程validation

我在模型中有2个属性contractor1和contractor2,如何对它们使用单​​个远程validation

[Display(Name ="Contractor 1:")] [Remote("ValidateContractor", "Contracts")] public string Cntrctr1 {get; set;} [Display(Name = "Contractor 2:")] [Remote("ValidateContractor", "Contracts")]`enter code here` public string Cntrctr2 {get; set;} 

Controller中的远程validationfunction

 public JsonResult ValidateContractor1(string Cntrctr) { var valid = Validations.ValidateContractor(Cntrctr); if (!valid) {return Json("Enter correct contractor", JsonRequestBehavior.AllowGet);} else{return Json(true, JsonRequestBehavior.AllowGet);} } public static bool ValidateContractor(string CntrctrNM) { bool valid; using (var entities = new CAATS_Entities()) { var result = (from t in entities.PS_VENDOR_V where (t.VNDR_1_NM).Equals(CntrctrNM) select t).FirstOrDefault(); if (result != null) { valid = true; } else { valid = false; } } return valid; } 

这不起作用。 你能帮我解决这个问题吗?

调用远程validation时,查询字符串键是字段的名称,例如在您的情况下/Contracts/ValidateContractor1?Cntrctr1=foo 。 您需要一个更动态的解决方案。

您可以这样做的一种方法是在ValidateContractor1没有任何参数,而只是获取第一个查询字符串值。 这没有经过测试但应该适合您:

 public JsonResult ValidateContractor1() { // gets the name of the property being validated, eg "Cntrctr1" string fieldName = Request.QueryString.Keys[0]; // gets the value to validate string Cntrctr = Request.QueryString[fieldName]; // carry on as before var valid = Validations.ValidateContractor(Cntrctr); if (!valid) {return Json("Enter correct contractor", JsonRequestBehavior.AllowGet);} else{return Json(true, JsonRequestBehavior.AllowGet);} } 

如果你发现他的方法不起作用,加入Rhumborls答案可能是因为你正在使用表格; 如果是这种情况,则需要使用Form属性而不是QueryString。

 public JsonResult ValidateContractor() { // gets the name of the property being validated, eg "Cntrctr1" string fieldName = Request.Form.Keys[0]; // gets the value to validate string Cntrctr = Request.Form[fieldName]; // carry on as before var valid = Validations.ValidateContractor(Cntrctr); if (!valid) {return Json("Enter correct contractor", JsonRequestBehavior.AllowGet);} else{return Json(true, JsonRequestBehavior.AllowGet);} }