Одинаковая удаленная проверка для 2 разных свойств в модели
У меня есть 2 свойства подрядчик1 и подрядчик2 в модели, как я могу использовать одну удаленную проверку для них обоих
[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;}
Функция удаленной проверки в контроллере
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;
}
Это не работает Можете ли вы помочь мне с этим?
2 ответа
Когда вызывается удаленная проверка, ключ строки запроса - это имя поля, например, в вашем случае /Contracts/ValidateContractor1?Cntrctr1=foo
, Вам нужно более динамичное решение.
Один из способов сделать это - не иметь никаких параметров в ValidateContractor1
и вместо этого просто возьмите первое значение строки запроса. Это не проверено, но должно работать для вас:
public JsonResult ValidateContractor1()
{
// gets the name of the property being validated, e.g. "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, e.g. "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);}
}