我遇到远程验证问题。
我有一个带有属性的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时似乎只有一个问题。
由于
标记
答案 0 :(得分:2)
我遇到了同样的问题。进入ValidateHostFullName()
的参数必须与输入名称相同。
答案 1 :(得分:0)
我遇到了同样的问题。渲染的html控件没有以类名作为前缀,但在远程验证代码中,我通过为classname.propertyname添加前缀来绑定。删除此绑定解决了我的问题。或者只通过前缀属性名称也适合我。