[英]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像以前一样被填充,没有明显的区别。
是什么赋予了? 我需要做些什么吗?
我正在使用
编辑:
在仔细检查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.