我正在使用ASP.Net Core 7.0
并尝试显示DateTime.Now
到输入框中,但在加载页面时没有显示任何内容。
请参阅下面我的所有代码。
模型
public class DateShowVM
{
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime TranDate { get; set; }
}
行动
public IActionResult Index()
{
ViewBag.datenow = Convert.ToDateTime(DateTime.Now.ToString("dd/MM/yyyy"));
return View();
}
看法
<div class="form-group">
<label asp-for="TranDate" class="control-label"></label>
<input asp-for="TranDate" value="@ViewBag.datenow" readonly class="form-control" />
<span asp-validation-for="TranDate" class="text-danger"></span>
</div>
主要问题是
ViewBag.datenow
可能的。.NET 将自动处理日期时间格式和您的输入格式所需的“dd/MM/yyyy”格式的转换。也许是因为不匹配而发生的问题。更改您的代码
到
它应该可以解决您的问题。我认为最好使用模型来处理数据。
如果您只想在标签中显示(而不是编辑)特定格式的日期,
<input>
则更容易使用type="text"
:请考虑到,当您使用
ViewBag
类中声明的数据注释时DateShowVM
,它们将变得毫无用处。有必要在ToString("dd/MM/yyyy")
方法中指定格式。但是,当使用强类型视图时,数据注释就在游戏中。因此,将所需的格式应用于属性就足够了。
定义数据模型并传递给视图:
查看代码:
StackOverflow 上有很多关于使用 标签的问题
input
,type="date"
但为了支持不同的日期格式,需要编写 JavaScript 代码。