[显示(提示MVC3

时间:2011-08-05 18:03:56

标签: asp.net-mvc-3 c#-4.0

我正在尝试设置我的模型,以便我可以使用 @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框。

对于其他人来说简明扼要的最终答案将在下面发布。

3 个答案:

答案 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 questionSO answer)发布的链接中找到。

答案 1 :(得分:1)

不幸的是,这不适用于IE。至少IE9及更早版本。我花了几个小时拉我的头发,为什么这有助于其他人,并在这里不起作用。显然IE不会显示提示。希望IE10能解决这个问题。

答案 2 :(得分:0)

早期版本的IE不支持占位符属性,因此Display[(Promt="...")]工作正常我建议使用(连同Samack描述的字符串模板)任何jQuery水印插件(我使用谷歌一个) )然后将其添加到Document.Ready函数:

$(document).ready(function(){
    $(':text').watermark({ textAttr: 'placeholder' });
})