我在模型中有2个属性Contractor1和Contractor2,如何对它们两个都使用单个远程验证
[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 中的远程验证功能
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;
}
这是行不通的。你能帮我吗?
最佳答案
调用远程验证时,querystring键是字段的名称,例如在您的情况下/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);}
}
关于c# - 对模型中的2个不同属性进行相同的远程验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27807745/