2017-08-31 85 views
0

当提交我的表单时,我收到一个错误,说我的viewmodel中没有找到某个属性“密码”的错误。无法找到Viewmodel属性

System.ArgumentException:无法找到属性ProjectName.ViewModels.User.UserSecurityViewModel.Password。

这里是我的HTML表单

<form id="securityForm" class="form-horizontal" method="post" action="/User/SaveSecurityInfo"> 
 
    <div class="panel panel-default"> 
 
    <div class="panel-heading">Change Your Password</div> 
 
    <div class="panel-body"> 
 
     <div class="col-sm-7"> 
 
     <div class="form-group"> 
 
      <label for="OldPassword" class="col-sm-4 control-label">Old Password</label> 
 
      <div class="col-sm-8"> 
 
      <input type="password" name="OldPassword" class="form-control input-lg" id="OldPassword"> 
 
      </div> 
 
     </div> 
 
     <div class="form-group"> 
 
      <label for="NewPassword" class="col-sm-4 control-label">New Password</label> 
 
      <div class="col-sm-8"> 
 
      <input type="password" name="NewPassword" class="form-control input-lg" id="NewPassword"> 
 
      </div> 
 
     </div> 
 
     <div class="form-group"> 
 
      <label for="ConfirmPassword" class="col-sm-4 control-label">Confirm Password</label> 
 
      <div class="col-sm-8"> 
 
      <input type="password" name="ConfirmPassword" class="form-control input-lg" id="ConfirmPassword"> 
 
      </div> 
 
     </div> 
 
     </div> 
 
     <div class="col-sm-5"> 
 
     some test text @Html.ValidationSummary("", new { @class = "text-danger" }) 
 
     </div> 
 
    </div> 
 
    <div class="panel-footer"> 
 
     <div class="col-sm-offset-9"> 
 
     <button id="updatePassword" type="submit" @*form="securityForm" *@ class="btn btn-primary btn-lg">Update Password</button> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</form>

这里是我的视图模型

public class UserSecurityViewModel 
{ 
    [Required] 
    [StringLength(12, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
    [DataType(DataType.Password)] 
    public string OldPassword { get; set; } 

    [Required] 
    [StringLength(12, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
    [DataType(DataType.Password)] 
    public string NewPassword { get; set; } 

    [DataType(DataType.Password)] 
    [System.ComponentModel.DataAnnotations.Compare("Password", ErrorMessage = "The confirm password does not match, type again!")] 
    public string ConfirmPassword { get; set; } 
} 
+0

你没有认真生成你的html手动吗?使用'HtmlHelper'方法(例如'Html.PasswordFor(m => m.OldPassword,new {@class =“...”})'为客户端验证生成'data-val- *'属性并且拥有2路模型绑定。 –

回答

3
[DataType(DataType.Password)] 
    [System.ComponentModel.DataAnnotations.Compare("Password", ErrorMessage = "The confirm password does not match, type again!")] 
    public string ConfirmPassword { get; set; } 

你可能意味着把NEWPASSWORD这里,如果那是什么你是compari ng到

[DataType(DataType.Password)] 
    [System.ComponentModel.DataAnnotations.Compare("NewPassword", ErrorMessage = "The confirm password does not match, type again!")] 
    public string ConfirmPassword { get; set; }