我有一个密码,需要进行必要的字段验证。占位符属性在IE中不起作用,而是对显示为特殊字符的水印文本进行验证。 我在这里遇到了很多建议 Placeholders in IE和 http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html适用于除密码以外的所有文本框。非常感谢任何帮助。
答案 0 :(得分:2)
我看到了同样的行为。非常令人沮丧的东西。我尝试通过添加如下所示的〜/ Views / Shared / EditorTemplates / Password.cshtml模板来覆盖默认模板:
@Html.Password("",
ViewData.TemplateInfo.FormattedModelValue,
new {
@class = "text-box single-line password",
placeholder = ViewData.ModelMetadata.Watermark})
当我为String类型(〜/ 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,但你做什么?
答案 1 :(得分:1)
而不是
@Html.PasswordFor(model => model.Password)
使用
@Html.EditorFor(model => model.Password)