How can I use placeholder attribute with Html.EditorFor?
Solution 1
Upgrade to MVC 5.1 and you can use HTML attributes in EditorFor:
@Html.EditorFor(m => m.variable, new { htmlAttributes = new { placeholder = "Your Placeholder Text" } })
http://www.asp.net/mvc/overview/releases/mvc51-release-notes
Solution 2
@Html.EditorFor(model => model.members_ssn, new { htmlAttributes = new { @class = "form-control", placeholder = "Your Example Here" } })
Solution 3
This works for MVC 5.
In my case i was looking to set the placeholder from the model metadata, like this:
@Html.EditorFor(model => model.name, new { htmlAttributes = new { @class = "form-control", placeholder = Html.DisplayNameFor(x => x.name) } })
Solution 4
When using TextBoxFor
or TextAreaFor
rather than EditorFor
, use only the inner key-value pair from @Medo's answer, since the method directly expects an htmlAttributes object:
@Html.TextBoxFor(m => m.variable, new { placeholder = "Your Placeholder Text" })
(I realize this is tangential to the original question, but having this here would have helped me when I landed on this page earlier, looking for an answer to how to add placeholder text to an Html.TextAreaFor
!)
caj
Updated on July 09, 2022Comments
-
caj almost 2 years
I want to use the placeholder attribute in the Html.EditorFor so I did just like in the first answer: Html5 Placeholders with .NET MVC 3 Razor EditorFor extension?
But in the final part, I don't have the EditorTemplates folder so I created it and when I tried to create the string.cshtml view I couldn't because the name "string" is reserved so I chose stringg.cshtml instead and it didn't work! Do I have to change the name elsewhere in my program? I did exactly like the answer...
Thank you!
-
Termato over 9 years+1 - Thank you for that link. I would say this is your best option if you're willing to upgrade to 5.1. Works great.
-
Yoda about 9 yearsWhy did you have to use
@
before theplaceholder
attribute? -
Medo about 9 yearsI'm not sure why, but that's how it's done. When you enumerate htmlAttributes you need to use @ for them to be recognized. (@class, @id ...)
-
romanoza about 9 years@Yoda @Medo
@
is not necessary in this case.@
is used only if variable name is the same as any of the C# keywords, i.e.@class
. -
DᴀʀᴛʜVᴀᴅᴇʀ over 7 yearsDo you mind taking a few minutes and explain what your code is doing?