0

以下のコードでは、ユーザー名をリモート検証関数に渡すことができません。

public string UserName { get; set; }

public class Numbers
{


            [Display(Name = "Additonal Numbers")]
            [Remote("NumberExists", "Account", AdditionalFields = "UserName", ErrorMessage = "Serial is already taken.")]
            public string additionalNumbers { get; set; }
 }


public List<Numbers> NumberList { get; set; }

これは簡単な例ですが、リスト内の同じモデルから追加のフィールドを渡したいのですが、パブリック クラスの範囲外のものにはアクセスできないようです。

これを達成するために何らかの方法でモデルの残りをリストに渡す必要がありますか、それともここで何か間違っていますか?

4

2 に答える 2

0

リモート検証属性のAdditionalFieldsパラメーターは、検証されるオブジェクトと同じクラスにある必要があります。

..編集..

public class Numbers
{

            public string UserName { get; set; }

            [Display(Name = "Additonal Numbers")]
            [Remote("NumberExists", "Account", AdditionalFields = "UserName", ErrorMessage = "Serial is already taken.")]
            public string additionalNumbers { get; set; }
 }

..コメントの後に編集..あなたがしたいことは、すべての番号がユーザー名に対して一意であることを検証することであるように見えます。これを試して:

public string UserName { get; set; }

[Display(Name = "Additonal Numbers")]
[Remote("NumberExists", "Account", AdditionalFields = "UserName", ErrorMessage = "Serial is already taken.")]
public List<String> NumberList { get; set; }

NumberExistsアクションで、1つの文字列だけでなく、文字列のリストを取得します。これにより、アレイ全体を一度に検証できます。

Public ActionResult NumberExists(List<String> NumberList, String UserName){
    //Validate list is unique for username
}
于 2012-06-07T14:08:31.737 に答える
0

UserNameプロパティはプロパティの同じクラスにある必要がありadditionalNumbersます:

public class NumbersViewModel
{
   public string UserName { get; set; }

   [Display(Name = "Additonal Numbers")]
   [Remote("NumberExists", "Account", AdditionalFields = "UserName", ErrorMessage = "Serial is already taken.")]
   public string additionalNumbers { get; set; }

   public List<Numbers> NumberList { get; set; }
}
于 2012-06-07T14:24:39.940 に答える