if you've defined custom displaytemplate, there way use displayformat.dataformatstring
defined object?
for example, i've defined displaytemplate double
:
<div class="form-group"> @html.label("", viewdata["label"] string, new { @class = "col-sm-6" }) <p class="col-sm-6"> @html.displaytextfor(m => m) </p> </div>
then model defines displayformat:
[display(name = "in weight")] [displayformat(dataformatstring = "{0} lb")] public double? inweight{ get; set; }
in above example, displaytextfor
provides simple tostring(), while replacing displayfor
renders nothing.
the @html.displaytextfor(m => m)
method not take account displayformatattribute
, @html.displayfor(m => m)
not work because recursively calling creating endless loop. need access properties modelmetadata
.
note not generating form control, use of <label>
element not appropriate.
your template should like
@model system.double <div> <div>@viewdata.modelmetadata.getdisplayname()</div> <div>@string.format(viewdata.modelmetadata.displayformatstring ?? "{0:0.00}", model)</div> </div>
and add class names enclosing elements style it
note have added 'default' format properties [displayformat]
may not applied.
side note: since property nullable
, enhance further including like
@if (model == null) { <div>@(viewdata.modelmetadata.nulldisplaytext ?? "not assigned")</div> } else { <div>@string.format(viewdata.modelmetadata.displayformatstring ?? "{0:0.00}", model)</div> }