我在确定如何格式化日期中遇到一些麻烦。在我的应用程序中,有一个编辑按钮。单击后,该文本框即可使用日期值进行编辑。但是,它也显示了我不想看到的时间。我该如何解决?
我的模型类中的代码:
[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();
});
答案 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帮助器生成的文本框(或其他编辑器)。