无法找到Viewmodel属性
问题描述:
当提交我的表单时,我收到一个错误,说我的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; }
}
答
[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; }
你没有认真生成你的html手动吗?使用'HtmlHelper'方法(例如'Html.PasswordFor(m => m.OldPassword,new {@class =“...”})'为客户端验证生成'data-val- *'属性并且拥有2路模型绑定。 –