62

我正在使用 MVC4 和 Entity Framework 来开发 Intranet Web 应用程序。我有一个可以编辑的人员列表。当我访问编辑视图时,在“开始日期”文本框中,日期显示如下:7/11/2013 00:00:00。我要做的是以 yyyy/MM/dd 格式显示它。我试过了,String.Format("{0:yyyy/MM/dd}", item.StartDate)但它不起作用。我也尝试了注释[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")],但它也不起作用。

在我看来,我有这个:

<div class="editor-field">
        @Html.TextBoxFor(model => model.StartDate, new { @class = "datepicker" })
        @Html.ValidationMessageFor(model => model.StartDate)
    </div>

关于如何做的任何想法?

4

6 回答 6

111
@Html.TextBoxFor(m => m.StartDate, 
    new { @Value = Model.StartDate.ToString("yyyy/MM/dd"), @class="datepicker" })
于 2013-04-11T08:17:15.240 回答
76

在此处输入图像描述

您的问题要求EditorFor()但您提供的代码使用TextboxFor().

在您的模型(例如 MyModel.cs)中,您应该具有:

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

在您的视图(例如 Index.cshtml)中,您只需像编写它一样使用它:

@Html.EditorFor(m => m.StartDate, new { htmlAttributes = new { @class = "datepicker" } })

它按预期工作。

通过这样做(而不是改变它在视图中的显示方式),您可以在其他地方重用您的模型,而不必指定如何在视图中显示日期。因此,如果由于某种原因,您必须更改显示格式,则只需更改一次。

该解决方案也适用于 MVC 5。

于 2015-04-14T15:37:00.510 回答
4

对我来说最简单的是添加类型属性,

@Html.EditorFor(model => model.FechaRegistro, new { htmlAttributes = new { @class = "form-control oso" ,@type = "date"  } })
于 2018-02-12T06:50:02.907 回答
2

Html.EditorFor 也可以


@Html.EditorFor(model => model.StartDate, new { htmlAttributes = new { @class = "datepicker", @Value = model.StartDate.ToString("yyyy/MM/dd") } })
于 2018-01-20T06:39:53.827 回答
0

试试这个..将日期值转换为textboxfor中的htmlAttribute ..可以解决您的问题

<div class="editor-field">
    @Html.TextBoxFor(model => model.StartDate, new { htmlAttributes = new { @Value = Model.StartDate.ToString("yyyy/MM/dd"), type = "date"  }})
    @Html.ValidationMessageFor(model => model.StartDate)
</div>
于 2019-08-28T19:03:13.200 回答
0

我是这里的菜鸟(也使用 MVC),这只是 Maxime 使用部分类的一种变体......

如果您有一个 DB-first 模型并且不想直接更改它以免丢失您的更改,只需在您自己的部分类中做同样的事情。只需在您的模型文件夹中添加一个新的类/文件,并确保它使用与您生成的模型相同的命名空间。

因此,这是您如何声明元数据以格式化日期和修改另一个值的显示名称(即:缩写表中的列标题)

namespace MyProjectName.Models
{

    public class MyModelMeta
    {

        [DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]  // format used by Html.EditorFor
        public DateTime StartDate;

        [Display(Name = "User ID")] // abbreviation shown in Html.DisplayNameFor
        public string SomeReallyLongUserIDColumn;

    }

    [MetadataType(typeof(MyModelMeta))]
    public partial class MyModel
    {

    }
}
于 2015-11-23T16:28:00.273 回答