在MVC3中使用远程验证时的空值

时间:2011-10-19 15:53:44

标签: asp.net-mvc-3 asp.net-mvc-validation

我遇到远程验证问题。

我有一个带有属性的viewmodel,我在其中添加了一个Remote验证器,但是当我运行表单并在文本框中输入一个字符串时,传递给控制器​​的值为null。

viewmodel中的属性如下所示:

[Required(ErrorMessage = "Enter the host's name")]
[Remote("ValidateHostFullName", "BoardroomBooking", ErrorMessage = "Enter a different name")]
[DisplayName("Host's Name")]
public string HostFullName { get; set; }

Controller中验证器的代码如下所示:

public ActionResult ValidateHostFullName([Bind(Prefix="BookingReceptionViewModel")]string HostFullName)
{
    if (!HostFullName.Equals("John Smith"))
    {
        return Json(true, JsonRequestBehavior.AllowGet);
    }

    return Json("{0} is not allowed", JsonRequestBehavior.AllowGet);
}

无论框中输入什么内容,HostFullName的字符串值都显示为null。我在使用和没有绑定前缀的情况下尝试过它并没有任何区别。

我在模型上尝试了这个并且它有效,但是当我使用viewmodel时似乎只有一个问题。

由于

标记

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。进入ValidateHostFullName()的参数必须与输入名称相同。

答案 1 :(得分:0)

我遇到了同样的问题。渲染的html控件没有以类名作为前缀,但在远程验证代码中,我通过为classname.propertyname添加前缀来绑定。删除此绑定解决了我的问题。或者只通过前缀属性名称也适合我。