如何将控制器日期值传递给编辑视图的Date picker并正常显示
解决Edit视图中Date Picker不显示传递值的问题
核心原因
HTML5的date类型输入控件仅支持YYYY-MM-DD格式的日期字符串,而默认的EditorFor可能输出本地格式的日期(如MM/DD/YYYY或DD/MM/YYYY),导致控件无法解析值,从而不显示已传递的日期。
解决方案
方案1:给模型属性添加格式化特性
在实体模型中,为Date_of_birth属性添加DisplayFormat特性,强制编辑模式下输出指定格式:
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] public DateTime Date_of_birth { get; set; }
之后保持原视图代码不变,EditorFor会按照指定格式输出日期字符串,控件即可正常显示值。
方案2:改用TextBoxFor手动指定格式
如果不想修改模型,可以直接替换EditorFor为TextBoxFor,明确指定日期格式:
@Html.TextBoxFor(model => model.Date_of_birth, "{0:yyyy-MM-dd}", new { @class = "form-control js-datepicker", type = "date" })
这种方式更直接,确保输出的日期字符串符合HTML5控件的要求。
方案3:验证后端传递的模型值
确认Edit动作方法中,已正确从数据源获取并传递了Date_of_birth的值,避免值为null或未被正确赋值:
public ActionResult Edit(int id) { var model = db.YourEntity.Find(id); // 检查model.Date_of_birth是否有有效日期值 return View(model); }
内容的提问来源于stack exchange,提问作者Dev Beginner
相关产品推荐
相关产品推荐

