繁体   English   中英

客户端验证不能与ASP.NET MVC 2中的子属性一起使用?

[英]Clientside validation not working with sub-properties in ASP.NET MVC 2?

我有一个名为User的对象,其属性为Name ,其属性为Required

public class User
{
     public int Id { get; set; }

     [Required]
     public string Name { get; set; }
}

我创建了一个文本框,如下所示:

<%= Html.TextBoxFor(model => model.Name) %>

启用客户端验证时, Name是经过完全验证的客户端。

但是,如果我创建一个ViewModel,其中User现在是一个属性

public class UserModel
{
     public User TheUser { get; set; }
     public string SomeOtherProperty { get; set; }
}

并创建我的文本框

<%= Html.TextBoxFor(model => model.TheUser.Name) %>

然后客户端验证失败。 该表单被发布,而没有客户端验证来拾取该错误。

看起来像javascript window.mvcClientValidationMetadata像以前一样被填充,没有明显的区别。

是什么赋予了? 我需要做些什么吗?

我正在使用

  • ASP.NET MVC 2 RC2(带有.NET 3.5 / VS2008)
  • 最新的Future下载中的MicrosoftMvcJQueryValidation.js

编辑:

在仔细检查window.mvcClientValidationMetadata时,它没有被填满。 没有指定ValidationRules:

{"FieldName":"TheUser.Name","ReplaceValidationMessageContents":true,"ValidationMessageId":"TheUser_Name_validationMessage","ValidationRules":[]}

您应该为类User创建一个编辑器模板。 使用Html.EditorFor(model => model.User,“ User”)加载它,其中“ User”是您的编辑器模板的名称。

用户类应该是此编辑器模板的视图模型。

然后,在用户的编辑器模板中,调用其属性的编辑器模板。

开箱即用的MVC客户端验证应与此一起正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM