ASP.Net MVC DisplayFormat

前端 未结 3 756
無奈伤痛
無奈伤痛 2020-11-29 03:25

In my model I have the following DataAnnotations on one of my properties

[Required(ErrorMessage = \"*\")]
[DisplayFormat(DataFormatString = \"{0:d}\")]
[Data         


        
相关标签:
3条回答
  • 2020-11-29 03:47

    As Brad said it dosn't work for TextBoxFor but you'll also need to remember to add the ApplyFormatInEditMode if you want it to work for EditorFor.

    [DataType(DataType.Date), DisplayFormat( DataFormatString="{0:dd/MM/yy}", ApplyFormatInEditMode=true )]
    public System.DateTime DateCreated { get; set; }
    

    Then use

    @Html.EditorFor(model => model.DateCreated)
    
    0 讨论(0)
  • 2020-11-29 03:55

    The [DisplayFormat] attribute is only used in EditorFor/DisplayFor, and not by the raw HTML APIs like TextBoxFor.

    0 讨论(0)
  • 2020-11-29 04:00

    My problem was to set some html attributes (jquery-datepicker), so EditorFor was no option for me.

    Implementing a custom helper-methode solved my problem:

    ModelClass with DateTime-Property:

    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
    public DateTime CustomDate{ get; set; }
    

    View with ModelClass as Model:

    @Html.TextBoxWithFormatFor(m => m.CustomDate, new Dictionary<string, object> { { "class", "datepicker" } })
    

    Helper-Methode in static helper class:

    public static class HtmlHelperExtension {
        public static MvcHtmlString TextBoxWithFormatFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IDictionary<string, object> htmlAttributes) {
            ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
            return htmlHelper.TextBox(htmlHelper.ViewData.TemplateInfo.GetFullHtmlFieldName(metadata.PropertyName), string.Format(metadata.DisplayFormatString, metadata.Model), htmlAttributes);
        }
    }
    
    0 讨论(0)
提交回复
热议问题