コレクション内の項目のプロパティに対してリモート検証を実行しようとしています。検証は、コレクションの最初のアイテムで正常に機能します。検証メソッドへの http リクエストは次のようになります。
/Validation/IsImeiAvailable?ImeiGadgets[0].ImeiNumber=123456789012345
ただし、URL が以下のように見える 2 番目の項目では、検証が機能しません。
/Validation/IsImeiAvailable?ImeiGadgets[1].ImeiNumber=123456789012345
これの理由は、ゼロ インデックスで始まらないコレクションではバインドが機能しないことだと確信しています。
私の検証方法には、次のような署名があります。
public JsonResult IsImeiAvailable([Bind(Prefix = "ImeiGadgets")] Models.ViewModels.ImeiGadget[] imeiGadget)
コレクション内のアイテムを渡すので、このようにバインドする必要がありますが、実際に渡すのは単一の値です。
単純な古いクエリ文字列としてバインドする以外に、これに対処できる方法はありますか。
ありがとう
編集:これは Imei 変数を取得するための簡単な修正ですが、モデルバインディングを使用したいです:
string imeiNumber = Request.Url.AbsoluteUri.Substring(Request.Url.AbsoluteUri.IndexOf("=")+1);
編集: これが私の ImeiGadget クラスです:
public class ImeiGadget
{
public int Id { get; set; }
[Remote("IsImeiAvailable", "Validation")]
[Required(ErrorMessage = "Please provide the IMEI Number for your Phone")]
[RegularExpression(@"(\D*\d){15,17}", ErrorMessage = "An IMEI number must contain between 15 & 17 digits")]
public string ImeiNumber { get; set; }
public string Make { get; set; }
public string Model { get; set; }
}