首页 > 解决方案 > 如何在视图(Razor)中转换包含日期时间值的 ViewData 并分配给日期时间选择器输入字段(本地日期时间)

问题描述

控制器代码 -

ViewData["fromDate"] = formcollection.fromDate; (毫无疑问,我能够在 javascript 中看到 viewdata 值)

.cshtml 视图- <input type="datetime-local" id="fromDate" value="@ViewData["fromDate"] />

上述任务无效。

标签: c#asp.net-corerazor-pages

解决方案


<input type="datetime-local" id="fromDate" value="@(((DateTime)ViewData["fromDate"]).ToString("yyyy-MM-dd"))" />

但是,如果您使用的是 ASP.NET Core,则应该使用 ViewModel 和输入标签助手。然后在标签助手上设置格式字符串,它会正确格式化日期:

public class MyViewModel
{
    // various properties for the view
    public DateTime FromDate {get;set;}
}

然后你的标签助手:

<input asp-for="FromDate" asp-format="yyyy-MM-dd" />

请注意,格式必须符合yyyy-MM-ddRFC 3339。datetime-local 控件将负责在用户的语言环境中呈现值。

我在这里写过关于在 ASP.NET Core 中使用 DateTimes 的博客。它以 Razor 页面为重点,但这些原则也适用于 MVC:https ://www.mikesdotnetting.com/article/352/working-with-dates-and-times-in-razor-pages-forms


推荐阅读