2014-01-23 119 views
0

我有一个使用2种型号的形式,所以我包括这样:ValidationMessage没有显示出来

@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个型号?

回答

1

从此LINK它确认您不能在嵌套对象上进行客户端验证。只有属性级验证器可以发出客户端验证。

所以宁可使用DataAnnotations你可以使用FluentValidation.NET作为this链接

您可以选择还有其它的方式表示通过@Darin是有两种机型separete局部视图,并呼吁从单一视图,然后把这些意见根据需要为这些视图建立模型。

像这样

<div class="input-group"> 
     @Html.Partial("ViewForModelData", Model.Data) 
     </div> 


     <div class="input-group"> 
     @Html.Partial("ViewForModelDevice", Model.Device) 
     </div> 

然后你就可以在这两种观点不同的验证摘要!