在MVC应用程序中将Web服务的DateTime字符串转换为MM/dd/yyyy格式

4

在我的MVC表单中

<div class="form-group">
    @Html.LabelFor(model => model.achPayDate, htmlAttributes: new { @class = "control-label col-md-7" })
    @Html.DisplayFor(model => model.achPayDate)                                        
</div>

在我的模型中
[DisplayName("Payment Date")]
[DataType(DataType.Date)]
public string achPayDate { get; set; }  

achPayDate 从网络服务获取数据。

achPayDate = 2016-09-21T00:00:00-07:00 

我想将其格式化为 MM/dd/yyyy,以便为 09/21/2016。我尝试过

[DisplayName("Payment Date")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString=("{0:MM/dd/yyyy}"))]
public string achPayDate { get; set; }  

这不起作用。我还尝试过

<div class="form-group">
    @Html.LabelFor(model => model.achPayDate, htmlAttributes: new { @class = "control-label col-md-7" })
    @Html.DisplayFor(model => model.achPayDate, "{0:MM/dd/yyyy}")                                        
</div>

无法正常工作

不确定该怎么做


1
你为什么在achPayDate中使用string类型?应该使用DateTime。你在问题中展示的代码并没有显示出你是如何从Web服务结果读取值并映射到你的视图模型属性的。无论如何,请查看DateTime.ParseExact文档。 - Shyju
1
你的属性是 string 类型。为了使用格式化字符串(并且 [DataType(DataType.Date)] 仅适用于使用 @Html.EditorFor()),它需要是 DateTime 类型 - public DateTime achPayDate { get; set; } - user3559349
1个回答

1

我自己找到了答案!这是我所做的:

在模型中

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

并且在MVC表单中

                                <div class="form-group">
                                    @Html.LabelFor(model => model.achPayDate, htmlAttributes: new { @class = "control-label col-md-7" })
                                    @Html.DisplayFor(model => model.achPayDate, new {@class="date"})                                        
                                </div>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接