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

.NET Core MVC应用:创建视图设置的日期在编辑视图中重置

解决jQuery Datepicker在CRUD编辑视图中不保留日期的问题

我来帮你搞定这个问题,这个坑我之前也踩过——核心问题出在创建视图没有正确绑定模型字段,以及编辑视图没有把已存储的日期值回显到Datepicker控件里。咱们一步步来修复:

第一步:修复创建视图的模型绑定和Datepicker初始化

你现在的创建视图里,input标签没有绑定DateOfBirth模型字段,导致提交表单时日期值没法正确传到后端存储。修改后的代码如下:

<div class="form-group">
    <label asp-for="DateOfBirth" class="control-label"></label>
    <p><input type="text" id="datepicker" asp-for="DateOfBirth"></p>
    <span asp-validation-for="DateOfBirth" class="text-danger"></span>
</div>

然后要确保Datepicker的初始化脚本正确,还要和后端日期格式匹配(比如后端用DateTime类型的话,推荐用yy-mm-dd格式):

$(function() {
    $("#datepicker").datepicker({
        dateFormat: "yy-mm-dd" // 和后端模型的日期解析格式保持一致
    });
});

第二步:修复编辑视图的日期回显

编辑视图需要把从数据库读取的DateOfBirth值填充到Datepicker里。先把HTML部分改成和创建视图一致的绑定方式:

<div class="form-group">
    <label asp-for="DateOfBirth" class="control-label"></label>
    <p><input type="text" id="datepicker" asp-for="DateOfBirth"></p>
    <span asp-validation-for="DateOfBirth" class="text-danger"></span>
</div>

然后修改初始化脚本,添加回显逻辑:

$(function() {
    // 获取后端通过asp-for自动填充的日期值
    var savedDate = $("#datepicker").val();
    
    $("#datepicker").datepicker({
        dateFormat: "yy-mm-dd"
    });

    // 如果存在已存储的日期,设置到Datepicker控件中
    if (savedDate) {
        $("#datepicker").datepicker("setDate", new Date(savedDate));
    }
});

几个关键注意事项

  • 确保模型字段类型正确:你的DateOfBirth字段应该是DateTime或者DateTime?(允许为空)类型,这样后端才能正确接收和返回日期值。
  • 前后端日期格式统一:Datepicker的dateFormat必须和后端解析/生成日期的格式一致,否则会出现日期无法识别的问题。
  • 检查控制器逻辑:确认你的Edit控制器方法已经从数据库读取了完整的记录,并且把包含DateOfBirth的模型传递给了编辑视图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:57:51