Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Html.TextboxFor default value for Integer/Decimal to be Empty instead of 0

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) %> 
like image 274
GONeale Avatar asked Oct 08 '10 01:10

GONeale


1 Answers

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:#.#}") 
like image 190
Sel Avatar answered Sep 21 '22 19:09

Sel