我们如何使用@Html.EditorFor来显示用户密码?
How can we use @Html.EditorFor to display user password?
如何使用@Html.EditorFor显示用户密码?
一种替代方法是使用@Html.PasswordFor。
哪个选项更合适以及引入此编辑器助手的具体原因。
要使用 @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()
的情况下,如果由于错误而 return 视图,密码将传递给客户端并显示该值(尽管在控件中显示为一系列点)。这只会增加黑客拦截请求并发现密码的风险。 PasswordFor()
方法不会将值传递给客户端,输入将为空,迫使用户重新输入密码(这是应该发生的)。
如何使用@Html.EditorFor显示用户密码? 一种替代方法是使用@Html.PasswordFor。 哪个选项更合适以及引入此编辑器助手的具体原因。
要使用 @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()
的情况下,如果由于错误而 return 视图,密码将传递给客户端并显示该值(尽管在控件中显示为一系列点)。这只会增加黑客拦截请求并发现密码的风险。 PasswordFor()
方法不会将值传递给客户端,输入将为空,迫使用户重新输入密码(这是应该发生的)。