You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需提交表单如何获取当前DateTime并存储到ASP.NET Core模型属性

功能实现方案

优先推荐:服务端自动赋值(安全、可靠)

这种方式完全不需要用户参与日期填写,也不会出现前端篡改、时区不一致的问题,是最稳妥的实现方式。
操作步骤:

  • 删掉前端代码中没用的隐藏日期输入框、日期选择器相关JS代码,清理后前端表单仅保留组名输入框即可:
<input asp-for="Name" type="text" class="form-control" id="inputName" placeholder="Group name">
  • 三种服务端赋值方式选一种即可:
  1. 模型属性默认值赋值
    直接在模型定义时给日期属性设置默认值:
// 可选 DateTime.UtcNow 存储UTC时间,避免跨时区业务场景下的日期混乱
public DateTime DateTime { get; set; } = DateTime.Now;
public string Name { get; set; }
  1. 控制器提交时手动赋值
    在接口接收表单参数后、写入数据库前手动给日期属性赋值,优先级最高,会覆盖所有前端传入的日期值,彻底避免篡改:
[HttpPost]
public IActionResult CreateGroup(你的模型类 model)
{
    if (ModelState.IsValid)
    {
        model.DateTime = DateTime.Now;
        // 此处为EF Core写入数据库逻辑,按需替换为你自己的存储逻辑
        _context.Add(model);
        _context.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(model);
}
  1. 数据库层面设置默认值
    如果用EF Core,可以在DbContext的OnModelCreating方法中配置字段默认值,写入数据时数据库自动生成日期:
// 数据库为SQL Server用GETDATE(),MySQL用NOW(),PostgreSQL用CURRENT_TIMESTAMP
modelBuilder.Entity<你的模型类>()
    .Property(p => p.DateTime)
    .HasDefaultValueSql("GETDATE()");

可选方案:前端自动赋值(不推荐)

如果确实需要前端生成日期,可通过JS给隐藏输入框自动赋值,弊端是容易被篡改、时区可能和服务端不一致。
操作步骤:

  • 调整前端代码:
<input type="hidden" asp-for="DateTime" class="form-control" id="hiddenDate" />
<input asp-for="Name" type="text" class="form-control" id="inputName" placeholder="Group name">

<script>
$(function () {
    // 自动生成当前日期赋值给隐藏域,按你需要的格式调整即可
    const now = new Date();
    const formattedDate = `${now.getDate()}/${now.getMonth() + 1}/${now.getFullYear()}`;
    $('#hiddenDate').val(formattedDate);
});
</script>

提示:你现有代码中的日期选择器初始化逻辑绑定的是#reservationdate元素,当前表单内不存在该元素,这段代码本身就是无效的,两种方案都可以直接删掉。

内容的提问来源于stack exchange,提问作者Mithun CH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:39:02