我有一个名为 User 的对象,其属性为 Name ,并带有必需属性。
public class User
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
我创建了一个文本框,如下所示:
<%= Html.TextBoxFor(model => model.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":[]}
答案 0 :(得分:0)
您应该为类User创建一个编辑器模板。加载它 Html.EditorFor(model =&gt; model.User,“User”),“User”是编辑器模板的名称。
用户类应该是此编辑器模板的视图模型。
然后,在用户的编辑器模板中,调用编辑器模板以获取其属性。
MVC开箱即用的客户端验证应该可以正常使用。