jquery - 可空日期时间、编辑器模板、JQUERY UI DatePicker

标签 jquery datetime nullable editortemplates

我的目的是通过按照这篇文章 ASP.NET MVC 2 Templates 创建一个 EditorTemplate 将 JQuery UI Datepicker 应用到我的整个网站。

@model DateTime

@{
string name = ViewData.TemplateInfo.HtmlFieldPrefix;
string id = name.Replace(".", "-");

<div class="editor-label">
    @Html.LabelFor(model => model)
</div>
<div class="editor-field, datepicker">
    @Html.EditorFor(model => model)
    @Html.ValidationMessageFor(model => model)
</div>
} 

相关代码按照描述完美运行;但是,除了几个 DateTime 字段之外,模型还包含 1 个可为空的 DateTime 字段,导航到该页面会导致以下错误:

传入字典的模型项为 null,但此字典需要类型为“System.DateTime”的非空模型项。

事实上,即使在路径 Views/Shared/EditorTemplates 中创建一个名为“DateTime”的空部分也足以生成错误,这表明即使模板被重写,它可能仍然无法处理空值。对于可空和不可空的 DateTime 字段,索引 View 中的代码(通过 EF Code-First 通过 MvcScaffolding 生成)是相同的:

    <div class="editor-label">
        @Html.LabelFor(model => model.ItemInstance.iArrivalDate)
    </div>
    <div class="editor-field,datepicker">
        @Html.EditorFor(model => model.ItemInstance.iArrivalDate)
        @Html.ValidationMessageFor(model => model.ItemInstance.iArrivalDate)
    </div>

那么是否可以修改模板来处理可为空的 DateTime?

最佳答案

您指定了 DateTime 模型,它是值类型且不能为 null。这就是错误消息告诉您的内容。尝试将您的模型更改为可为空的 DateTime。

@model DateTime?

@{...}

这应该可以解决问题。

关于jquery - 可空日期时间、编辑器模板、JQUERY UI DatePicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7480123/

相关文章:

c# - 如何在不闪烁的情况下在同一页面中添加/编辑功能?

jquery - 如何延迟 animate.css 中的无限类?

java - Joda-Time 库指定 mili 秒精度

php - PHP 和 MYSQL 中格式 DD/MM/YYYY 的字符串到日期的转换不起作用

templates - 也许输入 D

c# - 从 Nullable 到 normal 的隐式转换,有什么想法吗?

javascript - jQuery:如何遍历/迭代对象列表

javascript - C# - 获取 Ajax 数据

java - DateTimeFormatter.format 与大陆/城市

c# - 如何对可为空的日期使用空合并运算符