如何使用 Razor/C# 值预填充“日期”输入字段

问题描述 投票:0回答:2

我有一个“日期”类型输入,我试图让 Razor 代码用服务器已有的信息预填充日期,因为它用于 MVC ASP.NET Core 应用程序上的编辑字段我'我正在努力。

我使用的代码是:

<input type="date" name="DeliveredDate" id="DeliveredDate" value='@Model["order"].DeliveredDate.ToString("mm/dd/yyyy")'>

我可以获取代码以在页面的任何其他部分显示该字符串,但是是否有技巧可以让相同的字符串填充日期字段的值?我所有的谷歌搜索都没有发现任何特别有用的东西。

c# asp.net-core asp.net-core-mvc
2个回答
3
投票

因为 HTML 的

<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" />

备注:

  1. 确保您已经在控制器操作中设置了日期值,例如

    model.DeliveredDate = DateTime.Now
    model
    的类型为
    Model["order"]
    )。

  2. 后一种方法需要在 viewmodel 属性中设置

    DisplayFormatAttribute
    ,因为没有字符串格式化参数来从
    EditorFor
    或标签助手本身设置格式。


3
投票

正确的命令最终是

@Model["order"].DeliveredDate.ToString("yyyy-MM-dd") 

但是后来我从老师那里得知,有一个可以显示的日期范围,并且不同平台有所不同,但我很确定可以显示的范围是在 1950 年到 2049 年之间。

一旦我实际将其应该显示的日期设置为该范围内的日期,它就会起作用,如果我尝试显示该范围之外的日期,它会再次中断。

© www.soinside.com 2019 - 2024. All rights reserved.