我目前正在使用@Html.EditorFor
HTML helper作为密码字段.我想改用@Html.PasswordFor
HTML助手.
我复制了当前代码,并将@Html.EditorFor
替换为@Html.PasswordFor
.
CSHTML
代码如下:
@Html.EditorFor(x => x.Password, new { htmlAttributes = new { @class = "form-control k-textbox large", placeholder = "password", @id = "password", @autocomplete = "off" } })
@Html.PasswordFor(x => x.Pwd, new { htmlAttributes = new { @class = "form-control k-textbox large", placeholder = "password", @id = "password", @autocomplete = "off" } })
渲染输出
这些参数完全相同,但会生成不同样式的文本框:
注意,@Html.EditorFor
有验证和占位符,但@Html.PasswordFor
没有;后者也有不同的风格.validation spam
元素也不是textbox的一部分.
生成的HTML
以下是为@Html.EditorFor
生成的HTML代码:
<input autocomplete="off" class="form-control k-textbox large text-box single-line password k-invalid" data-val="true" data-val-required=" " id="password" name="Password" placeholder="password" type="password" value="" aria-invalid="true">
以下是为@Html.PasswordFor
生成的HTML代码:
<input data-val="true" data-val-required=" " htmlattributes="{ class = form-control k-textbox large, placeholder = password, id = password, autocomplete = off }" id="Pwd" name="Pwd" type="password" aria-invalid="true" class="k-invalid">
模型定义
这就是我在模型中定义这两个字段的方式:
[Required(ErrorMessage = " ")]
[DataType(DataType.Password)]
public string Password { get; set; }
[Required(ErrorMessage = " ")]
[DataType(DataType.Password)]
public string Pwd { get; set; }
我做错了什么?