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 回答