0

我有一个带有必填字段验证的密码。placeholder 属性在 IE 中不起作用,而是对显示为特殊字符的水印文本进行验证。我遇到了很多建议,例如 IE 中的 Placeholdershttp://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html适用于除密码之外的所有文本框。任何帮助都非常重要赞赏。

4

2 回答 2

2

我见过同样的行为。非常令人沮丧的东西。我尝试通过添加一个看起来像这样的 ~/Views/Shared/EditorTemplates/Password.cshtml 模板来覆盖默认模板:

@Html.Password("", 
ViewData.TemplateInfo.FormattedModelValue,
new { 
    @class = "text-box single-line password",
    placeholder = ViewData.ModelMetadata.Watermark})

当我为字符串类型(~/Views/Shared/EditorTemplates/Password.cshtml)而不是密码时,上述方法有效。于是我下载了 MVC4 的源码,看了一下。我能看到的唯一会使密码字段的行为方式与输入 (TextBoxFor) 字段不同的是格式数据作为 null 传递到底层 HTML 生成代码中(请参阅 System.Web.Mvc.Html. InputExtensions,第 233 行,PasswordHelper 函数)。但这只是一个猜测。我永远无法运行单元测试来验证该假设。

在我找到解决方案之前,我的解决方法是从这里更改我的 Razor 代码:

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

对此:

@Html.PasswordFor(model => model.Password, new { placeholder = "Password" })

这使我想要的水印出现了。这是一个kludge,但你怎么办?

于 2013-09-17T18:27:35.983 回答
1

乔希 - 你在正确的轨道上。

代替

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

利用

@Html.EditorFor(model => model.Password)
于 2013-11-13T03:41:39.220 回答