Razor 页面创建输入类型日期变成类型文本

Posted

技术标签:

【中文标题】Razor 页面创建输入类型日期变成类型文本【英文标题】:Razor Page Create Input Type Date Turns Into Type Text 【发布时间】:2021-10-15 17:29:48 【问题描述】:

我有一个 DateTime 类型的模型,想为其创建文本框。默认生成控件的类型是datetime-local。我只想将其更改为date,因为我不需要时间。但是,由于某种原因,加载完成后类型总是变为text 类型。

这是我的代码

<div class="form-group">
  <label asp-for="Order.TanggalOrder" class="control-label">Tanggal Order</label>
  <input asp-for="Order.TanggalOrder" type="date" class="" />
  <input asp-for="Order.TanggalOrder" type="time" class="form-control" />
  <span asp-validation-for="Order.TanggalOrder" class="text-danger"></span>
</div>

如您所见,浏览器在短时间内正确渲染了date 输入,然后变成了text。日期选择器仍然存在,但输入验证(dd/mm/yyyy 文本和日历图标)不再存在。

这种情况只发生在 date 类型上,正如我用 timedatetime 尝试过的那样,它们仍然可以正确呈现。

关于我必须做什么的任何线索? 我正在使用 .net 5 mvc。

【问题讨论】:

【参考方案1】:

您可以使用单独的日期和时间控件。为了让输入标签助手呈现正确的控件,需要进行更多配置:

型号:

[BindProperty, DataType(DataType.Date)]
public DateTime Date get; set; 

查看:

DateTime:
<input class="form-control" asp-for="Date" />

结果:

【讨论】:

以上是关于Razor 页面创建输入类型日期变成类型文本的主要内容,如果未能解决你的问题,请参考以下文章

以不同语言显示引导日期选择器日期,然后在 asp.net razor 视图中以英文提交日期

ASP.NET Core:为 List 类型的模型属性创建表单输入

如何在 Razor 页面模型中使用泛型类型

在 Blazor 应用 Razor 页面的 InputText 中绑定类型双精度值

如何强制 Razor 使 Editorfor 为浮点变量输入数字类型?

当前日期和时间 - MVC razor 中的默认值