我最近开始使用 MVC,并且偶然发现了一个问题。
所以,我有一个用户模型,其中包含一些变量,如 ID、用户名、密码,它们都对应一个数据库表,由 MVC 完全处理。
我现在有一个密码编辑页面,带有一个密码文本框和一个确认密码文本框,如下所示:
<div class="editor-label">
@Html.LabelFor(model => model.Password)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Password)
@Html.ValidationMessageFor(model => model.Password)
@Html.Password("passwordConfirmation")
</div>
所以,一切正常,它有 2 个文本框彼此相邻。
现在这是我的问题:我不希望第一个密码文本框自动填充来自随页面传递的模型中的“密码”变量的数据。
当然有一种“hackish”的方式,您只需创建一个常规密码框,然后稍后获取它的值 (@Html.Password("password")),
但我想知道是否有官方方式告诉 MVC 不要自动填写文本/密码框。
您可以尝试将 autocomplete="off"
属性应用于您的密码字段:
@Html.PasswordFor(x => x.PasswordConfirmation, new { autocomplete = "off" })
请注意,这是一个非标准属性,可能会破坏 HTML 验证,但大多数浏览器都尊重它。
此外,您还应该确保您没有在 View 模型上为 Controller 操作中的 PasswordConfirmation
属性设置任何值。
我是一名优秀的程序员,十分优秀!