我有一个看起来像这样的视图模型 -
public class upgradeViewModel
{
public Cart Cart { get; set; }
public RegisterModel RegisterModel { get; set; }
}
视图模型包含一个名为RegisterModel
的属性,RegisterModel
模型对象看起来与此类似 -
public class RegisterModel
{
[Required]
[Display(Name = "Your name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Your email address")]
public string Email { get; set; }
...
}
我在视图模型上使用RegisterModel
属性在视图中设置一个使用upgradeViewModel
对象作为模型的表单。在提交表单时,我没有得到任何客户端验证,尽管我确实获得了RegisterModel
对象的服务器端验证。
我相信我已正确配置所有内容,以便不显眼的客户端验证工作,并且它可以在网站的其他区域中使用。我是否需要做一些额外的工作才能使客户端验证适用于视图模型的子对象?
这是我的观看代码 -
@model upgradeViewModel
@{
ViewBag.Title = "Title";
Layout = "~/Views/Shared/_LayoutNormal.cshtml";
}
<h2>Title</h2>
Some text ....
@using (Html.BeginForm()) {
@Html.ValidationSummary(true, "Account creation was unsuccessful. Please correct the errors and try again.")
<div>
<fieldset>
<legend>Your Information</legend>
<div class="editor-label">
@Html.LabelFor(m => m.RegisterModel.UserName)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.RegisterModel.UserName)
@Html.ValidationMessageFor(m => m.RegisterModel.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.RegisterModel.Email)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.RegisterModel.Email)
@Html.ValidationMessageFor(m => m.RegisterModel.Email)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.RegisterModel.Password)
</div>
<div class="editor-field">
@Html.PasswordFor(m => m.RegisterModel.Password)
@Html.ValidationMessageFor(m => m.RegisterModel.Password)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.RegisterModel.ConfirmPassword)
</div>
<div class="editor-field">
@Html.PasswordFor(m => m.RegisterModel.ConfirmPassword)
@Html.ValidationMessageFor(m => m.RegisterModel.ConfirmPassword)
</div>
<p>
<input type="submit" value="Save Details" class="inputbutton" />
</p>
</fieldset>
</div>
}
答案 0 :(得分:0)
您应确保以下appsettings位于您的web.config文件中。并且您在页面上引用了jquery.validate.unobtrusive.min.js。 (创建它时,应该在MVC项目的Scripts文件夹中)
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />