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

ASP.NET MVC无法设置当前日期,求助@Html.EditorFor设置当前日期语法

在@Html.EditorFor中设置当前日期的几种方法

我来帮你解决这个问题,在ASP.NET MVC里用@Html.EditorFor设置当前日期有几种靠谱的方式,我按推荐程度给你列出来:

1. 在ViewModel中设置默认值(最推荐)

这是符合MVC设计理念的做法——把数据逻辑放在ViewModel里,视图只负责展示。你只需要给对应的DateTime属性初始化当前日期即可:

public class YourViewModel
{
    // 可以根据需求用DateTime.Today(仅日期)或DateTime.Now(包含时间)
    public DateTime TargetDate { get; set; } = DateTime.Today;
}

然后在视图里直接使用:

@Html.EditorFor(m => m.TargetDate)

页面加载时就会自动填充当前日期了,你之前没显示,大概率是ViewModel里的属性没初始化,默认是DateTime.MinValue,所以视图里显示为空或者默认的0001-01-01。

2. 视图中通过JavaScript动态赋值(适合临时需求)

如果不想修改ViewModel,或者需要根据前端条件动态设置,可以用原生JS在页面加载时给输入框赋值:

@Html.EditorFor(m => m.TargetDate, new { htmlAttributes = new { @id = "target-date-input" } })

<script>
document.addEventListener('DOMContentLoaded', function() {
    const dateInput = document.getElementById('target-date-input');
    // 只有当输入框为空时才设置当前日期,避免覆盖已有值
    if (!dateInput.value) {
        const today = new Date();
        // 格式化为HTML日期输入控件默认的yyyy-MM-dd格式
        const formattedDate = today.toISOString().split('T')[0];
        dateInput.value = formattedDate;
    }
});
</script>

3. 自定义EditorTemplate(适合全局统一样式/逻辑)

如果你的项目里多个地方都需要这种默认日期的输入框,可以创建自定义的EditorTemplate:

  1. 在Views/Shared/EditorTemplates文件夹下创建DateTime.cshtml文件
  2. 写入以下内容:
@model DateTime?

@{
    // 如果模型值为空,设置为当前日期
    var defaultDate = Model.HasValue ? Model.Value : DateTime.Today;
}

@Html.TextBox("", defaultDate.ToString("yyyy-MM-dd"), new { @class = "form-control date-picker" })

之后在视图里使用@Html.EditorFor(m => m.TargetDate)时,就会自动应用这个模板,为空时填充当前日期。

内容的提问来源于stack exchange,提问作者Never Land

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:25:05