我有一个'date'类型的输入,并且我试图获取Razor代码以使用服务器已经拥有的信息预填充日期,因为它是针对MVC ASP.NET Core应用程序上的Edit字段的我正在尝试。
我正在使用的代码是:
<input type="date" name="DeliveredDate" id="DeliveredDate" value='@Model["order"].DeliveredDate.ToString("mm/dd/yyyy")'>
我可以获取代码以在页面的任何其他部分显示字符串,但是是否有技巧来获取相同的字符串来填充日期字段的值呢?我所有的谷歌搜索都没有发现任何特别有用的东西。
答案 0 :(得分:2)
您可以通过在助手中直接设置@Html.TextBox()
或日期格式来使用@Html.TextBoxFor()
或强类型DisplayFormatAttribute
助手:
Viewmodel属性
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime DeliveredDate { get; set; }
查看
@Html.TextBox("DeliveredDate", Model["order"].DeliveredDate, "{0:MM/dd/yyyy}", new { type = "date" })
@Html.TextBoxFor(model => model.DeliveredDate, "{0:MM/dd/yyyy}", 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
或标签帮助程序本身的格式。
答案 1 :(得分:0)
正确的命令最终是
@Model["order"].DeliveredDate.ToString("yyyy-MM-dd")
但是后来我从我的老师那里得知,可以显示一个日期范围,并且该日期范围会因不同的平台而异,但是我很确定可以显示的范围是1950年到2049年之间。
一旦我实际上将它应该显示的日期设置为该范围内的日期,它就会起作用,并且如果我尝试显示该范围之外的日期,它将再次中断。