如何在 Html.EditorFor 中使用占位符属性?
Posted
技术标签:
【中文标题】如何在 Html.EditorFor 中使用占位符属性?【英文标题】:How can I use placeholder attribute with Html.EditorFor? 【发布时间】:2014-06-20 17:25:27 【问题描述】:我想在 html.EditorFor 中使用占位符属性,所以我就像第一个答案一样:Html5 Placeholders with .NET MVC 3 Razor EditorFor extension?
但在最后一部分,我没有 EditorTemplates 文件夹,所以我创建了它,当我尝试创建 string.cshtml 视图时,我不能,因为名称“string”是保留的,所以我选择了 stringg.cshtml相反,它没有用!我必须在程序的其他地方更改名称吗?我确实很喜欢这个答案...
谢谢!
【问题讨论】:
【参考方案1】:升级到MVC 5.1,就可以在EditorFor中使用HTML属性了:
@Html.EditorFor(m => m.variable, new htmlAttributes = new placeholder = "Your Placeholder Text" )
http://www.asp.net/mvc/overview/releases/mvc51-release-notes
【讨论】:
+1 - 谢谢你的链接。如果您愿意升级到 5.1,我会说这是您的最佳选择。效果很好。 为什么必须在placeholder
属性之前使用@
?
我不知道为什么,但就是这样。当您枚举 htmlAttributes 时,您需要使用 @ 来识别它们。 (@class, @id ...)
@Yoda @Medo @
在这种情况下是不必要的。 @
仅在变量名称与任何 C# 关键字相同时使用,即 @class
。【参考方案2】:
@Html.EditorFor(model => model.members_ssn, new htmlAttributes = new @class = "form-control", placeholder = "Your Example Here" )
【讨论】:
您介意花几分钟解释一下您的代码在做什么吗?【参考方案3】:这适用于 MVC 5。
就我而言,我希望从模型元数据中设置占位符,如下所示:
@Html.EditorFor(model => model.name, new htmlAttributes = new @class = "form-control", placeholder = Html.DisplayNameFor(x => x.name) )
【讨论】:
【参考方案4】:当使用TextBoxFor
或TextAreaFor
而不是EditorFor
时,请仅使用@Medo 答案中的内部键值对,因为该方法直接需要一个htmlAttributes 对象:
@Html.TextBoxFor(m => m.variable, new placeholder = "Your Placeholder Text" )
(我意识到这与最初的问题无关,但是当我早些时候登陆此页面时,如果我在这里寻找如何将占位符文本添加到 Html.TextAreaFor
的答案,这对我有帮助!)
【讨论】:
【参考方案5】:使用一些 jquery,例如: $("#FirstName").attr("placeholder", "不要输入姓名 - 使用搜索按钮");
【讨论】:
以上是关于如何在 Html.EditorFor 中使用占位符属性?的主要内容,如果未能解决你的问题,请参考以下文章