【发布时间】:2022-11-10 03:39:16
【问题描述】:
由于某种原因,我在表单的日期类型输入中输入的日期没有进入数据库。相反,在我研究和尝试了所有不同的方法之后,无济于事,日期默认为 01/01/01,我理解这是默认的最小值,是吗?在 postgres 数据库中,日期字段显示“-infinity”。我可以使用 pgadmin 查询工具成功更新日期,但是当我尝试从表单创建或编辑记录时,会发生上述情况。
当我到达调试器中的 ModelState.IsValid 行时,它显示了我在其他字段中正确输入的数据,但日期字段显示的是 01/01/01。
我浏览过文档和其他论坛帖子,但我尝试的修复都没有奏效。 任何帮助将不胜感激。
这是模型
public class ToDo
{
[Key]
public int Id { get; set; }
public DateOnly CreateDate { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Description { get; set; }
public DateOnly DueDate { get; set; }
public bool Complete { get; set; }
}
...帖子
public async Task<IActionResult> OnPost()
{
if (!ModelState.IsValid)
{
var errors = ModelState.SelectMany(x => x.Value.Errors.Select(z => z.Exception));
}
if (ModelState.IsValid)
{
await _db.Todo.AddAsync(Todo);
await _db.SaveChangesAsync();
TempData["success"] = "ToDo created successfully.";
return RedirectToPage("Index");
}
return Page();
}
...和形式
<form method="post">
<input hidden asp-for="Todo.Id" />
<div class="p-3 mt-4">
<div class="row pb-2">
<h2 class="text-primary pl-3">Create ToDo</h2>
<hr />
</div>
<div asp-validation-summary="All"></div>
<div class="mb-3">
<label asp-for="@Model.Todo.CreateDate"></label>
<input asp-for="@Model.Todo.CreateDate" class="form-control" type="date"/>
<span asp-validation-for="Todo.CreateDate" class="text-danger"></span>
</div>
<div class="mb-3">
<label asp-for="@Model.Todo.Name"></label>
<input asp-for="@Model.Todo.Name" class="form-control" />
<span asp-validation-for="Todo.Name" class="text-danger"></span>
</div>
<div class="mb-3">
<label asp-for="@Model.Todo.Description"></label>
<input asp-for="@Model.Todo.Description" class="form-control" />
<span asp-validation-for="Todo.Description" class="text-danger"></span>
</div>
<div class="mb-3">
<label asp-for="@Model.Todo.DueDate"></label>
<input asp-for="@Model.Todo.DueDate" class="form-control" type="date"/>
<span asp-validation-for="Todo.DueDate" class="text-danger"></span>
</div>
<div class="form-check m-4">
<input asp-for="@Model.Todo.Complete" class="form-check-input" type="checkbox"/>
<label class="form-check-label ms-3" asp-for="@Model.Todo.Complete">
Complete
</label>
</div>
<button type="submit" class="btn btn-outline-primary rounded-pill" style="width:150px;">Update</button>
<a asp-page="Index" class="btn btn-outline-secondary rounded-pill text-white" style="width:150px;">Back To List</a>
</div>
</form>
【问题讨论】:
标签: entity-framework-6 razor-pages