Formatting data
Using DataType Attributes
Open the Movie.cs
file and examine the Movie
class. The System.ComponentModel.DataAnnotations
namespace provides formatting attributes in addition to the built-in set of validation attributes. We've already applied a DataType
enumeration value to the release date and to the price fields. The following code shows the ReleaseDate
and Price
properties with the appropriate DataType
attribute.
The
DataType
attributes only provide hints for the view engine to format the data and supplies elements/attributes such as<a>
for URL's and<a href="mailto:EmailAddress.com">
for email.You can use the
RegularExpression
attribute to validate the format of the data.The
DataType
attribute is used to specify a data type that's more specific than the database intrinsic type, they're not validation attributes.In this case we only want to keep track of the date, not the time. The
DataType
Enumeration provides for many data types, such as Date, Time, PhoneNumber, Currency, EmailAddress and more.The
DataType
attribute can also enable the application to automatically provide type-specific features.For example, a
mailto:
link can be created forDataType.EmailAddress
, and a date selector can be provided forDataType.Date
in browsers that support HTML5.
The
DataType
attributes emit HTML 5data-
(pronounced data dash) attributes that HTML 5 browsers can understand.DataType.Date
doesn't specify the format of the date that's displayed.By default, the data field is displayed according to the default formats based on the server's
CultureInfo
.
DisplayFormat attribute
The DisplayFormat
attribute is used to explicitly specify the date format:
The DataType
Enumeration provides for many data types, such as Date, Time, PhoneNumber, Currency, EmailAddress and more.
The ApplyFormatInEditMode
setting specifies that the formatting should also be applied when the value is displayed in a text box for editing. (You might not want that for some fields — for example, for currency values, you probably don't want the currency symbol in the text box for editing.) You can use the DisplayFormat
attribute by itself, but it's generally a good idea to use the DataType
attribute.
The DataType
attribute conveys the semantics of the data as opposed to how to render it on a screen, and provides the following benefits that you don't get with DisplayFormat:
The browser can enable HTML5 features (for example to show a calendar control, the locale-appropriate currency symbol, email links, etc.)
By default, the browser will render data using the correct format based on your locale.
The
DataType
attribute can enable MVC to choose the right field template to render the data (theDisplayFormat
if used by itself uses the string template).
You can use the DisplayFormat
attribute by itself, but it's generally a good idea to use the DataType
attribute. The DataType
attribute conveys the semantics of the data as opposed to how to render it on a screen!
Last updated