在我看来,我有以下元素
@Html.PasswordFor(model => model.Password)
这是在创建/更新用户详细信息的屏幕上。当我尝试更新用户时,此字段保持空白。当我将此元素更改为TextBoxFor时,它获取数据。如何填写密码字段。
答案 0 :(得分:137)
如上所述,出于安全原因,最好避免这样做。如果您仍希望保留密码以便从当前验证失败的地方继续,则可以使用带有html属性参数的HTML帮助程序:
Html.PasswordFor(x => x.Password, new { value = Model.Password})
答案 1 :(得分:39)
这是按照设计的。密码未填写以防止意外重新提交,并防止页面包含未加密的密码。如果您要回发凭证,显然密码错误。
在您的情况下,您可以创建一个输入数据的扩展名,或者只使用类型为password的HTML输入。
答案 2 :(得分:5)
MVC保护您不会因此而做这样的事情。您实际上不应该这样做,因为用户密码不应以未加密和未加密的方式存储。如果你的目标是尽快结束http://plaintextoffenders.com/,你可以这样做:
<input type="password" name="Password" id="Password" value="@Model.Password" />
答案 3 :(得分:2)
我找到了这个工作的声音。我需要以表格中显示的密码:
window.print();
这将使您输入密码类型而不会丢失值。
答案 4 :(得分:0)
如前所述,它是设计使然。但这可能是错误的。我们刚刚遇到了一个新用户,他在页面刷新后刚添加密码时对空密码感到困惑。因此,一个简单的解决方法是将标签“ Password”更改为“ New password”。现在很清楚为什么此输入框始终为空。
答案 5 :(得分:0)
如果您正在使用 asp-for属性,则还可以执行以下操作:
” *“)):” Password“)” asp-for =“密码”>