错误:传递到字典中的模型项为空,但此字典需要类型为“System.DateTime”的非空模型项
本文关键字:模型 字典 类型 System DateTime 错误 | 更新日期: 2023-09-27 18:32:48
在我的模型中
[DataType(DataType.Date)]
[Display(Name="Event Date")]
[DisplayFormat(DataFormatString = "{0:d}")]
//[DisplayFormat(ApplyFormatInEditMode=true ,DataFormatString="{0:DD/MM/YYYY}")]
public DateTime EventDate { get; set; }
在我的视图中 (Create.cshtml)
<div class="editor-label">
@Html.LabelFor(model => model.EventDate)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.EventDate)
@Html.ValidationMessageFor(model => model.EventDate)
</div>
in Shared/EditorTemplates/Date.cshtml
@model DateTime
@Html.TextBox("", String.Format("{0:d}", Model.ToShortDateString()),
new { @class = "datefield", type = "date" })
并收到以下错误
The model item passed into the dictionary is null, but this dictionary requires a non-null model item of type 'System.DateTime'.
谢谢 解决了....只需将脚本放在文件中即可。
@model Nullable<DateTime>
@{
DateTime dt = DateTime.Now;
if (Model != null)
{
dt = (System.DateTime)Model;
}
@Html.TextBox("", String.Format("{0:d}", dt.ToShortDateString()), new { @class = "datefield", type = "date" })
}
<script type='text/javascript'>
$(document).ready(function () {
$(".datefield").datepicker({
// buttonImage: "/content/images/calendar.gif",
// showOn: "both",
// defaultDate: $("#calendar-inline").attr('rel')
showAnim: 'slideDown',
dateFormat: 'dd/mm/yy'
});
});
</script>
尝试将EventDate
定义为可为空的类型:DateTime?
您需要
使用 DateTime?
作为模型,并直接处理 null 值。
在可为 null 的类型上,调用 .HasValue
以查看该值是否实际为 null,或使用 ??
。 这是我的一些设置代码的工作方式:
// get the date the editor will work with, or use today's date if it is null
DateTime workingDate = if (Model.HasValue) ? Model.Value : DateTime.Now;
// check the model metadata to see if the underlying model type was nullable or not
bool isNullable = ViewData.ModelMetadata.IsNullableValueType;
// get the min date passed in as optional params. default to some reasonable timeframe
var minDate = ViewBag.MinDate ?? DateTime.Now.AddDays(-30)
// now start drawing the editor
这篇博文是开始阅读一些属性的方便地方。
虽然这是一个错误的时间问题,但我有另一种方法。您可以在模型上创建一个构造函数,并使用一些值(例如今天的日期)初始化日期属性。然后,在从控制器创建的操作方法上,可以将模型的新实例作为返回视图语句的参数传递。