我有一个“日期”类型输入,我试图让 Razor 代码用服务器已有的信息预填充日期,因为它用于 MVC ASP.NET Core 应用程序上的编辑字段我'我正在努力。
我使用的代码是:
<input type="date" name="DeliveredDate" id="DeliveredDate" value='@Model["order"].DeliveredDate.ToString("mm/dd/yyyy")'>
我可以获取代码以在页面的任何其他部分显示该字符串,但是是否有技巧可以让相同的字符串填充日期字段的值?我所有的谷歌搜索都没有发现任何特别有用的东西。
<input type="date" />
需要 yyyy-MM-dd
格式作为其 value=""
属性,您可以使用 @Html.TextBox()
或强类型 @Html.TextBoxFor()
帮助器来执行此操作,方法是直接在中设置 DisplayFormatAttribute
或日期格式帮手:
视图模型属性
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime DeliveredDate { get; set; }
查看
@Html.TextBox("DeliveredDate", Model["order"].DeliveredDate, "{0:yyyy-MM-dd}", new { type = "date" })
@Html.TextBoxFor(model => model.DeliveredDate, "{0:yyyy-MM-dd}", new { type = "date" })
或者通过设置日期格式来使用
EditorFor
,它会自动附加type = "date"
属性:
@Html.EditorFor(model => model.DeliveredDate)
如果您使用标签助手,只需设置
asp-for
属性:
<input asp-for="DeliveredDate" type="date" />
备注:
确保您已经在控制器操作中设置了日期值,例如
model.DeliveredDate = DateTime.Now
(model
的类型为 Model["order"]
)。
后一种方法需要在 viewmodel 属性中设置
DisplayFormatAttribute
,因为没有字符串格式化参数来从 EditorFor
或标签助手本身设置格式。
正确的命令最终是
@Model["order"].DeliveredDate.ToString("yyyy-MM-dd")
但是后来我从老师那里得知,有一个可以显示的日期范围,并且不同平台有所不同,但我很确定可以显示的范围是在 1950 年到 2049 年之间。
一旦我实际将其应该显示的日期设置为该范围内的日期,它就会起作用,如果我尝试显示该范围之外的日期,它会再次中断。