MVC:视图模型值不会显示在日期选取器中使用 type= "month"



如果有人问我这个问题,我很抱歉-我在谷歌搜索了一个小时,但运气不好,所以我想我会在这里发帖,看看是否能得到答案。

我正在使用MVC 5+实体框架构建一个web应用程序。我正在开发的模块之一是一个燃油卡跟踪器,其中包含有关车辆燃油卡的详细信息。

我有一个名为FuelCardViewModel的基本视图模型,它是带有几个SelectList对象的FuelCard模型(来自EF(。我拥有的一个属性是DateTime属性,名为ExpiryDate,它将保存卡的有效期。

当我填充视图模型并将其发送到Edit视图时,所有字段都会使用ViewModel中的值自动填充,ExpiryDate字段除外。当该字段设置为type = "date"时,该值将被正确地提取和显示,所以我知道这不是ViewModel绑定的问题。问题是,我只想要月/年,所以我必须使用type = "month"。当它设置为type = "month"(根据卡片到期日期格式仅显示月/年选择器(时,该值不会显示(尽管我在查看源和value属性时仍然可以看到该值。这进一步证明了ViewModel绑定工作正常,但使用月选择器而不是普通日期选择器时,格式会出错(。我们非常感谢在这方面提供的任何帮助;如果需要更多信息,请告诉我,我可以提供。

FuelCardViewModel:中的ExpiryDate属性

[Required]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MMMM yyyy}")]
[DataType(DataType.Date)]
[DisplayName("Expiry Date")]
public DateTime ExpiryDate { get; set; }

如果我想使用type = "date",我必须根据此处的其他答案将{0:MMMM yyyy}更改为{0:yyyy-MM-dd},因此将其更改为{0:MMMM yyyy}只是为了解决问题。

我的Edit视图中的字段:

<div class="form-group">
@Html.LabelFor(model => model.ExpiryDate, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.ExpiryDate, new { htmlAttributes = new { @class = "form-control", type = "month"} })
@Html.ValidationMessageFor(model => model.ExpiryDate, null, new { @class = "text-danger" })
</div>
</div>

Edit视图的显示方式(带type = "month"(:

查看图像

Edit视图应如何显示:

查看图像

终于解决了这个问题!我想我会在这里发布解决方案来帮助那些需要帮助的人。

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

应该是这样的:

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

这么简单的错误,但我的问题现在解决了!

最新更新