我们如何使用@ Html.EditorFor来显示用户密码?
问题描述:
我们如何使用@ Html.EditorFor来显示用户密码? 另一种方法是使用@ Html.PasswordFor。 哪个选项更适合引入此编辑器助手的任何特定原因。我们如何使用@ Html.EditorFor来显示用户密码?
答
为了生成具有使用@Html.EditorFor(m => m.Password)
type="password"
输入,既可以装饰你属性与DataTypeAttribute
[DataType(DataType.Password)]
public string Password { get; set; }
或(对于MVC-5.1或更高版本)可以添加使用
@Html.EditorFor(m => m.Password, new { htmlAttributes = new { type = "password" } })
属性
推荐的方法是使用@Html.PasswordFor()
,因为它不会发送请求中属性的值。除PasswordFor()
之外的所有HtmlHelper
生成表单控件的方法(如果它们存在,则从ModelState
值或从模型值填充输入。在EditorFor()
的情况下,如果由于错误而返回视图,则密码将传递给客户端,并且该值将显示(尽管是控件中的一系列点)。这只会增加黑客拦截请求并发现密码的风险。 PasswordFor()
方法不会将值传递给客户端,并且输入将为空,从而迫使用户重新输入密码(这是应该发生的事情)。
问题的背景是什么?您是否使用内置的身份识别2.0?如果密码是默认加密的,那么一旦它们被创建,就无法查看它们。如果您使用自己的密码/登录系统,则只需调用表中的数据并将其放入控制器页面的视图模型中即可。然后在您的视图模型相关字段的页面上调用@ Html.Editorfor helper。 – Rob