I am using the default asp.net MVC 2 syntax to construct TextBox's which are integer or decimal for my asp.net MVC web app:
<%: Html.TextBoxFor(model => model.Loan.InterestRate) %>
pretty straight forward, but the problem is inherently of the fact my binding model objects are decimal or int and non-nullable, they print their value as zero (0) on page load if my model is empty (such as in add mode for a CRUD template) and zero is an incorrect value and is invalid for my page validation also.
How could I have textboxes which have no starting value, just an empty textbox, I understand zero is a potential value, but I only accept values greater than zero anyway, so this is not a problem for me.
I even tried casting as a nullable decimal and also a non-for helper (which is not ideal), but alas, I am still receiving the default '0' value. any ideas??
<%: Html.TextBox("Loan.InterestRate", Model.Loan.InterestRate == 0 ? (decimal?)null : Model.Loan.InterestRate) %>
In your model add DisplayFormat attribute
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#.#}")] decimal InterestRate { get; set; }
View
@Html.TextBoxFor(model => model.InterestRate)
This outputs empty instead of 0. More format examples here
Update
TextBoxFor does`s not works with format, but EditorFor does:
@Html.EditorFor(model => model.InterestRate)
Update 2
It does work for TextBoxFor this way:
@Html.TextBoxFor(model => model.InterestRate, "{0:#.#}")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With