1

我正在尝试为我的 Html.Editorfor 显示水印,

这是我的视图模型

[Display(Prompt="This is a WaterMark")]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyy}", ApplyFormatInEditMode = true)]
public DateTime Dob { get; set; } 

这是我的看法

@Html.EditorFor(model => model.Dob)

这是我的 EditorTemplate String.cshtml,位于 \Views\Shared\EditorTemplates\String.cshtml

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

我按照这个线程尝试了这个 。但是我的水印从未出现过,但为什么呢?

感谢您帮助解决此问题

4

3 回答 3

4

此代码成功呈现placeholder相应<input>标记中的属性。这是一个 HTML5 属性,您使用的浏览器必须支持它才能使某些事情发生。例如,如果您使用的是 Internet Explorer,则只有在其未来的 10.0 版本中才会添加对此属性的支持。

有一些客户端脚本解决方案,例如jquery watermark 插件,您可以使用它来为尚不支持它的浏览器附加所需的行为。

于 2012-05-13T08:24:15.740 回答
0

使用 Display 进行水印(提示对我来说从来没有用过。但是使用此 jquery,您可以在文本框上显示水印。这里我使用图像代替水印。您需要创建水印文本的图像。

 $(document).ready(function () {

            /*Watermark for date fields*/

             if ($("#dob").val() == "") {
                $("#dob").css("background", "#ebebeb url('/Content/images/DateWaterMark.png') no-repeat 1px 0px");
            }

            $("#dob").focus(function () {
                if (watermark == 'MM/DD/YYYY') {
                    $("#dob").css("background-image", "none");
                    $("#dob").css("background-color", "#fff");
                }
            }).blur(function () {
                if (this.value == "") {
                    $("#dob").css("background", "#ebebeb url('/Content/images/DateWaterMark.png') no-repeat 1px 0px");
                }
            });

            $("#dob").change(function () {
                if (this.value.length > 0) {
                    $("#dob").css("background", "#fff");
                }
            });
}
于 2012-05-18T23:08:07.197 回答
0

具体回答您的问题:为什么您关注的帖子中的解决方案对您不起作用:您链接到的解决方案不起作用的原因是因为您使用 IE。在 Chrome 中尝试相同的代码 - 它会正确显示提示。我希望IE10能赶上。

于 2012-07-13T19:29:47.123 回答