Here is my code in MVC 5:
@Html.EditorFor(model => model.myfloatvalue, new { @type = "number", @min = "0", @step = "0.01", @value = "0" })
And here is the html code:
<input class="text-box single-line" data-val="true" data-val-number="The field Fix Amount must be a number." data-val-required="The Fix Amount field is required." id="myfloatvalue" name="myfloatvalue" type="text" value="">
Not to
<input class="text-box single-line" data-val="true" data-val-number="The field Fix Amount must be a number." data-val-required="The Fix Amount field is required." id="myfloatvalue" name="myfloatvalue" type="number" min="0" step="0.01" value="0">
What should I do?
Thanks for response!
You can actually change the default behaviour for the EditorFor for a
float
so that it producestype="number"
instead oftype="text"
.To do that you need to add a custom
EditorTemplate
for theSingle
(notfloat
) type to/Views/Shared/EditorTemplates/Single.cshtml
as follows:The reason this works is that
float
is a C# alias forSystem.Single
(see the Microsoft c# Language Reference for more details on that). Adding anEditorTemplate
called Float.cshtml will not work (I tried...).I got the idea for this from @Stephen Muecke's excellent answer to my question here. He also mentions the idea of creating your own
HtmlHelper
extension so you could then write@Html.FloatFor(...)
.This same approach can also be applied to
Decimal
andDouble
, both of which also rendertype="text"
by default.Have you tried wrapping your anonymous object in the
htmlAttributes
of another anonymous object? When usingEditorFor
/TextBoxFor
, I believe in MVC 5 that's the only way of affecting the HTML attributes output by the editor.If you not using MVC-5.1 or higher, then you will need to use
TextBoxFor()
. Note nohtmlAttributes
used here: