Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is DisplayFormat DataFormatString not working?

I have a property in my view model as follows:

[Editable(false)]
[Display(Name = "Date")]
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime MovementDate { get; set; }

Yet the markup

<td>
    @Html.DisplayFor(modelItem => item.MovementDate)
</td>

renders the date value as 2013/05/15 12:00:00 AM.

What am I doing wrong? My model:

public class WithDateModel
{
    [DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}")]
    public DateTime TheDate { get; set; }
    public WithDateModel()
    {
        TheDate = DateTime.Now;
    }
}

My view:

@model ParkPay.WebTests.Models.WithDateModel
@Html.DisplayFor(m => m.TheDate)
@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

What gets rendered:

2013/05/25 02:23:37 AM
like image 496
ProfK Avatar asked May 22 '13 17:05

ProfK


4 Answers

If you can't get it working on the model, you could try it on the view.

@Html.TextBoxFor(m => m.ValidFrom, "{0:dd/MM/yyyy}", new {maxlength = 10}) 
like image 161
user1616625 Avatar answered Oct 16 '22 03:10

user1616625


Why are you using ApplyFormatInEditMode if you have set [Editable(false)]? All ApplyFormatInEditMode does is format the date if you have it in a text box or something for editing, which you probably won't because of the aforementioned.

I was able to get the date to display correctly using the following:

[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}")] public DateTime Date  {     get     {         return DateTime.Now;     }     set     {         Date = DateTime.Now;     } } 

and in the view (with resulting output):

@Html.DisplayFor(x => x.Date)        // 2013/05/23 <br /> @Model.Date                          // 23/05/2013 09:57:56 <br /> @Html.DisplayFor(x => Model.Date)    // 2013/05/23 

Hope this helps.

like image 39
MattSull Avatar answered Oct 16 '22 03:10

MattSull


Since You want to exclude the time to get Only Date: At Model:-

 [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy/MM/dd}"]
   public DateTime TheDate { get; set; }

At Views:-

    @Html.DisplayFor(model=> model.TheDate)
    @Html.JQueryUI().DatepickerFor(model => model.TheDate)

The tutorial of the following link may help you.It works for me.

http://ilyasmamunbd.blogspot.com/2014/02/jquery-ui-datepicker-popup-calendar.html

like image 26
Md. Ilyas Hasan Mamun Avatar answered Oct 16 '22 03:10

Md. Ilyas Hasan Mamun


You have to annotate the type as Date

[DataType(DataType.Date)]
like image 31
Prakash G. R. Avatar answered Oct 16 '22 04:10

Prakash G. R.