在我的更改密码表单上,我在新密码字段中显示了星号。我假设它们是从登录表单的密码字段中出现的剩余部分?
更改密码表单(部分):
<div class="form-group">
@Html.LabelFor(m => m.Password, new { @class = "col-md-3 control-label" })
<div class="col-md-9">
@Html.PasswordFor(m => m.Password, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Password)
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.ConfirmPassword, new { @class = "col-md-3 control-label" })
<div class="col-md-3">
@Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.ConfirmPassword)
</div>
</div>
由于cookie在登录时保存密码,因此这种行为可能与浏览器有关。我只是想知道是否有任何方法可以在不重命名密码字段的情况下克服这个问题?
答案 0 :(得分:1)
@Html.PasswordFor
(以及所有其他xxxFor
HtmlHelpers)将使用模型在呈现页面时为该属性提供的任何值填充输入字段。在这种情况下,Model.Password
必须已经有一个值,可能是从您从数据库中提取用户时的值。请注意,如果您以纯文本格式存储用户密码,这是不好的做法。
在控制器中调用View
之前,请清除Password
属性。
如果这不起作用并且您已确认在页面加载时Model的Password
属性为空,那么可能正如您所说的那样是某些浏览器自动完成。您可以尝试将autocomplete = "off"
属性添加到input元素。