ASP.Net MVC3 Html.PasswordFor不填充

在我看来,我有以下要素

@Html.PasswordFor(model => model.Password) 

这是在创build/更新用户详细信息的屏幕上。 当我尝试更新用户时,该字段保持空白。 当我将此元素更改为TextBoxFor时,它将获取数据。 我如何获得填充密码字段。

这是devise的。 未填写密码以防止意外重新提交,并防止页面包含未encryption的密码。 显然,密码错误的开始,如果你张贴回来的凭据。

在你的情况下,你可以创build一个input数据的扩展,或者只使用一个types为password的HTMLinput。

如上所述,为了安全起见,最好避免这样做。 如果您仍想保留密码,以便从当前validation失败的位置继续,则可以使用带有html属性参数的HTML助手:

  Html.PasswordFor(x => x.Password, new { value = Model.Password}) 

MVC保护你不会做这样的事情。 你实际上不应该这样做,因为用户密码不应该存储未encryption和非哈希。 如果你的目标是结束http://plaintextoffenders.com/虽然,你可以做这样的事情:;

 <input type="password" name="Password" id="Password" value="@Model.Password" /> 

我发现这个工作。 我需要我的密码显示在窗体中:

 @model User @{ @Html.Label(Model.Username, new { @class = "label" }) @Html.TextBoxFor(Model => Model.Username, new { @class = "form-control" }) @Html.Label(Model.Password, new { @class = "label" }) @Html.TextBoxFor(Model => Model.Password, new { @class = "form-control make-pass" }) } <script type="text/javascript"> $(".make-pass").attr("type", "password"); </script> 

这将使您的input密码,而不会丢失的价值。