我正在尝试设置我的模型,以便我可以使用
@Html.EditorFor(e => e.publicationTitle)
让它显示带有提示的水印。
目前我在做
@Html.LabelFor(e => e.PublicationTitle) @Html.TextBox("PublicationTitle",tempTitle.ToString(), new { style = "width:350px", placeholder = "Put title here" })
@Html.ValidationMessageFor(e => e.PublicationTitle)
我发现你可以在我的模型中添加[Display(Prompt="Enter title here")]
但由于某些原因,我的观点并没有显示出来。
旁注。我确实试着按照这篇文章的说明进行操作 Html5 Placeholders with .NET MVC 3 Razor EditorFor extension?
在这篇文章的最后,它说要更改〜/ Views / Shared / EditorTemplates / String.cshtml文件,但是这个文件不在我的项目中。
任何提示都将不胜感激。提前谢谢。
跟进!
啊MVC3的乐趣啊。显然,一旦你理解了正在发生的事情,上面的帖子就回答了这个问题。如果在〜/ Views / Shared /文件夹中创建EditorTemplates / String.cshtml文件,则它将使用此模板作为editfor框。
对于其他人来说简明扼要的最终答案将在下面发布。
答案 0 :(得分:9)
在您的控制器中,您需要执行以下操作
[Display(Prompt="First Name Goes Here",Name="First Name")]
[StringLength(100,ErrorMessage="First Name may not be longer than 100 characters")]
public string AuthFirstName { get; set; }
Prompt =“这将显示的内容”显示的是将要创建的水印。
然后你需要在〜/ Views / Shared下创建文件夹“EditorTemplates”,整个路径将是〜/ Views / Shared / EditorTemplates /
然后创建文件String.cshtml并将以下代码放入其中
@Html.TextBox("",ViewData.TemplateInfo.FormattedModelValue, new { @class="text-box single-line", placeholder = ViewData.ModelMetadata.Watermark })
更多详细信息可以在tugberk(SO question和SO answer)发布的链接中找到。
答案 1 :(得分:1)
不幸的是,这不适用于IE。至少IE9及更早版本。我花了几个小时拉我的头发,为什么这有助于其他人,并在这里不起作用。显然IE不会显示提示。希望IE10能解决这个问题。
答案 2 :(得分:0)
早期版本的IE不支持占位符属性,因此Display[(Promt="...")]
工作正常我建议使用(连同Samack描述的字符串模板)任何jQuery水印插件(我使用谷歌一个) )然后将其添加到Document.Ready函数:
$(document).ready(function(){
$(':text').watermark({ textAttr: 'placeholder' });
})