MVC:ViewModel 值不会使用 type="month" 在 datepicker 中显示

Posted

技术标签:

【中文标题】MVC:ViewModel 值不会使用 type="month" 在 datepicker 中显示【英文标题】:MVC: ViewModel values will not display in datepicker using type="month" 【发布时间】:2021-03-14 14:55:51 【问题描述】:

抱歉,如果有人问过这个问题 - 我已经在 Google 上搜索了一个小时,但没有运气,所以我想在这里发帖,看看能不能得到答案。

我正在使用 MVC 5 + Entity Framework 构建一个 Web 应用程序。我正在开发的模块之一是燃油卡跟踪器,其中包含有关车辆上附加的燃油卡的详细信息。

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

当我填充视图模型并将其发送到Edit 视图时,所有字段都会使用视图模型中的值自动填充除了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"):

View Image

Edit 视图应该如何显示:

View Image

【问题讨论】:

【参考方案1】:

终于解决了!想我会在这里发布解决方案以帮助有需要的人。

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

应该是这样的:

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

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

【讨论】:

以上是关于MVC:ViewModel 值不会使用 type="month" 在 datepicker 中显示的主要内容,如果未能解决你的问题,请参考以下文章

将表数据映射到 asp .Net MVC 中的 ViewModel 列表

Dropdownlist中用viewmodel传值处理方法

Asp.net Core 如何将 ReflectionIT.Mvc.Paging 与 ViewModel 一起使用?

使用 ViewModel 在数据库中保存 MVC 下拉列表项

MVC 中的 ViewModel 是啥?

ASP .Net MVC 模型 - ViewModel - 视图