5

モデルに請負業者 1 と請負業者 2 の 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;

}

これはうまくいきません。これで私を助けてもらえますか?

4

2 に答える 2

3

リモート検証が呼び出されると、クエリ文字列キーはフィールドの名前になります/Contracts/ValidateContractor1?Cntrctr1=foo。より動的なソリューションが必要です。

これを行う 1 つの方法は、パラメーターを何も持たず、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);}
}
于 2015-01-07T16:51:30.227 に答える
0

彼の方法が機能しないことがわかった場合は、フォームを使用している可能性があります。この場合、QueryString の代わりに Form 属性を使用する必要があります。

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);}
}
于 2017-04-03T09:44:22.050 に答える