我在尝试使用Razor标记助手在ASP.NET MVC Core 2.0应用程序中格式化日期时间和数字时遇到问题。遵循良好实践,我想在与表单视图相关的数据模型中指定数据格式。我的模特public class OrderFormModel{ public bool IsEdit { get; set; } [Display(Name = "Order Time: ")] public DateTime ORDER_LOCAL_TIME { get; set; } [Display(Name = "Order Qty (K): ")] public int QUANTITY_K { get; set; }风景: <div class="form-group col-md-9"> <label asp-for="ORDER_LOCAL_TIME"></label> <input asp-for="ORDER_LOCAL_TIME" class="form-control" /> <span asp-validation-for="ORDER_LOCAL_TIME" class="text-danger"></span> </div> <div class="form-group col-md-6"> <label asp-for="QUANTITY_K"></label> <input asp-for="QUANTITY_K" min="1" class="form-control" style="text-align:right" /> <span asp-validation-for="QUANTITY_K" class="text-danger"></span> </div>所需的格式是12/12/2017 12:23 (can be separated in to two fields as workaround)1 000.145我一直在尝试很多选择,但都没有用。对于数字输入,我希望当用户输入值并留下输入时,要应用的格式。我一直在尝试: [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy hh:mm}")] (not applied at all) [DisplayFormat(DataFormatString = "{0:N3}")] (not applied at all) [DataType(DataType.Time)] (applied but seconds, milliseconds and AM/PM present) [DataType(DataType.Date)] (works for date only field)非常感谢您的帮助。谢谢。更新正如Stephen Muecke指出的,[DisplayFormat]在首次呈现页面时应用格式。同意,谢谢。我具有ORDER_LOCAL_TIME和QUANTITY_K属性的初始值。 DateTime =现在(对于ORDER_LOCAL_TIME)和1000(对于QUANTITY_K)。因此,例如在“新订单操作”中,我希望“表单视图”显示带日期的日期(仅限mm:ss)和数量(带千位分隔符)的格式化初始值。问题是我无法实现。正如斯蒂芬·穆克(Stephen Muecke)注意到的那样,当您在浏览器中并且用户编辑一个值并离开输入时所应用的格式是另一回事。如果我使用连接到QUANTITY输入的OnChange事件的Java Script函数,则可以格式化并尝试将格式化的数字作为文本返回到输入。但是在这种情况下:> (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 我在ASP.NET Core中工作,并且找到了解决该问题的方法,这个问题困扰了我一个星期(在这里或其他地方找到的任何论坛中,都没有得到满意的解决)。我不想在模型或控制器中编辑属性,因为我希望将整个日期(带有时间戳)存储在数据库中。解决方案是在视图中传递@item.CreatedDate.Date.ToShortDateString(),现在在要显示有限日期信息的页面上传递我想要的格式MM / DD / YYYY。 (“ CreatedDate”是我的财产)。希望这可以消除一些麻烦。 (adsbygoogle = window.adsbygoogle || []).push({});