ASP.NET MVC中的格式化日期

时间:2018-10-11 18:56:54

标签: javascript jquery asp.net-mvc

我在确定如何格式化日期中遇到一些麻烦。在我的应用程序中,有一个编辑按钮。单击后,该文本框即可使用日期值进行编辑。但是,它也显示了我不想看到的时间。我该如何解决?

Application

The Problem with the Application

我的模型类中的代码:

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

View类中的代码:

<td class="Planned_Date">
    <span>@Html.DisplayFor(x=>item.Planned_Date)</span>
    @Html.TextBoxFor(x => item.Planned_Date)
</td>

onClick():

  $("body").on("click", "#tblCustomers .Edit", function () {
            var row = $(this).closest("tr");
            $("td", row).each(function () {
                if ($(this).find("input").length > 0) {
                    $(this).find("input").show();
                    $(this).find("span").hide();
                }
            });
            row.find(".Update").show();
            row.find(".Cancel").show();
            $(this).hide();
        });

1 个答案:

答案 0 :(得分:2)

您需要在模型上编辑DataAnnotation

[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]

添加ApplyInEditMode属性:

[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}"), ApplyFormatInEditMode = true)]

这将使DataFormartString应用于由EditorFor或其他编辑器生成的文本框。从这个MSDN article

  

ApplyFormatInEditMode设置指定指定   当值显示在   文本框进行编辑。 (对于某些字段,您可能不希望这样做-因为   例如,对于货币值,您可能不需要货币符号   在文本框中进行编辑。)

然后,您应该更新视图以使用Razor帮助程序Html.EditorFor,而不是在视图中声明输入元素并从模型中设置值。有关更多信息,请参见Microsoft API

<td class="Planned_Date">
    <span>@Html.DisplayFor(x=>item.Planned_Date)</span>
    @Html.EditorFor(x=>item.Planned_Date)  
</td>

您可能必须调整示例代码以适合您的情况(例如,添加类或样式)。您的JavaScript仍然可以正常工作。

注意:DisplayFormat DataAnnotation不适用于由Html.TextboxFor生成的输入。它仅适用于使用Html.EditorFor和Razor Display帮助器生成的文本框(或其他编辑器)。