c# - MVC:ViewModel 值不会使用 type="month" 在 datepicker 中显示
问题描述
抱歉,如果这已经被问到了 - 我已经在谷歌上搜索了一个小时没有运气,所以我想我会在这里发帖,看看我是否能得到答案。
我正在使用 MVC 5 + Entity Framework 构建一个 Web 应用程序。我正在开发的模块之一是燃料卡跟踪器,其中包含有关连接到车辆的燃料卡的详细信息。
我有一个名为的基本视图模型FuelCardViewModel
,它是FuelCard
带有几个SelectList
对象的模型(来自 EF)。我拥有的一个DateTime
财产是一个名为的财产ExpiryDate
,它将持有卡的到期日期。
当我填充视图模型并将其发送到Edit
视图时,所有字段都使用 ViewModel 中的值自动填充,但字段除外ExpiryDate
。当该字段设置为 时type = "date"
,该值被拉出并正确显示,所以我知道这不是我的 ViewModel 绑定的问题。问题是,我只想要月/年,所以我必须使用type = "month"
. 当它设置为type = "month"
(根据卡到期日期格式仅显示月/年选择器)时,不会显示该值(尽管当我查看源代码并查看value
财产。这进一步支持了 ViewModel 绑定正常工作的事实,但是当使用月份选择器而不是普通日期选择器时,只是格式混乱)。非常感谢您对此的任何帮助;如果需要更多信息,请告诉我,我可以提供。
ExpiryDate
财产FuelCardViewModel
:
[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}")]
这么简单的错误,但我的问题现在解决了!
推荐阅读
- javascript - 执行纱线启动时无法获取/接收
- javascript - Kendo Scheduler,关闭事件重置数据
- r - 如何在 R 中声明和更改全局变量
- flutter - 在 DateTime 中获取每个月的确切日期
- rust - 我什么时候需要使闭包变量可变?
- javascript - Bootstrap-datepicker 设置语言
- javascript - 我无法访问 wwwroot ASP.NET 和 React.js 上的页面
- c# - 如何将xml值加载到组合框中
- amazon-web-services - 如何使用 spark (AWS Glue) 上的访问密钥凭据连接到 S3
- javascript - 在换行符上拆分,但不是 JS 中的换行符