我有使用2个模型的表单,所以我这样包含:
@model Equipment.Models.PublicViewModel
PublicViewModel是
namespace Equipment.Models
{
public class PublicViewModel
{
public Device Devices { get; set; }
public UserCredentials Data { get; set; }
}
}
例如,UserCredential类看起来像:
namespace Equipment.Models
{
public class UserCredentials
{
[Required]
public string UserName { get; set; }
[Required]
public string Password { get; set; }
}
}
和我的表格:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<hr />
@Html.ValidationSummary(true)
<div class="input-group">
@Html.LabelFor(model => model.Data.UserName, new { @class = " input-group-addon" })
@Html.TextBoxFor(model => model.Data.UserName, new { @class = "form-control" })<br />
@Html.ValidationMessageFor(model => model.Data.UserName)
</div>
...
<div class="input-group">
@Html.LabelFor(model => model.Devices.DeviceSerialNumber, new { @class = " input-group-addon" })
@Html.TextBoxFor(model => model.Devices.DeviceSerialNumber, new { @class = "form-control" })<br />
@Html.ValidationMessageFor(model => model.Devices.DeviceSerialNumber)
</div>
...
}
在其他形式,当我只使用一个模型时,一切正常。 有谁能告诉我为什么这不适用于2个型号?
答案 0 :(得分:1)
从此LINK确认您无法对嵌套对象进行客户端验证。只有属性级验证器才能发出客户端验证。
所以使用DataAnnotations,你可以使用FluentValidation.NET
{@ 3}} {@ 3}链接
您可以选择的另一种方法是为两个模型选择separete局部视图,并从单个视图调用这些视图,并根据需要将模型传递给这些视图。
喜欢这个
<div class="input-group">
@Html.Partial("ViewForModelData", Model.Data)
</div>
<div class="input-group">
@Html.Partial("ViewForModelDevice", Model.Device)
</div>
然后,您可以在这两个视图中单独进行验证摘要!