Why is DisplayFormat DataFormatString not working?

前端 未结 8 748
名媛妹妹
名媛妹妹 2020-11-29 05:27

I have a property in my view model as follows:

[Editable(false)]
[Display(Name = \"Date\")]
[DisplayFormat(DataFormatString = \"{0:yyyy/MM/dd}\", ApplyFormat         


        
相关标签:
8条回答
  • 2020-11-29 05:32

    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})
    
    0 讨论(0)
  • 2020-11-29 05:35

    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.

    0 讨论(0)
  • 2020-11-29 05:41

    This work for me:

    In the model:

    using System.ComponentModel.DataAnnotations;
    
    namespace Athlete.Models
    {
        public class Foo
        {
    
            [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
            public DateTime SignDate
            {
               get;
               set;
            }
        }
    }
    

    And in the view:

    <td style="text-align:left;">@Html.DisplayFor(modelItem => item.SignDate)</td>
    
    0 讨论(0)
  • 2020-11-29 05:45

    In my case a teammate had defined a global display template (aka ~\Views\Shared\DisplayTemplates\DateTime.cshtml) that I didn't realize took precedence over my [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")] on my model property.

    The solution was to move my format string to new shared template, so the attribute changes to:

    // see ~\Views\Shared\DisplayTemplates\DateMyFormat.cshtml for formatting
    [UIHint("DateMyFormat")]
    public DateTime MovementDate { get; set; }
    
    0 讨论(0)
  • 2020-11-29 05:52

    You need the var name in the Display Name:
    [Display(Name = "MovementDate")]
    public DateTime MovementDate { get; set; }

    [Editable(false)]
    [Display(Name = "MovementDate")]
    [DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
    public DateTime MovementDate { get; set; }
    
    0 讨论(0)
  • 2020-11-29 05:56

    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

    0 讨论(0)
提交回复
热议问题