我有自定义对象的编辑器模板。非常基本 - 只有一堆字符串和日期:
<%:Html.LabelFor(model => model.AString)%>
<%:Html.TextBoxFor(model => model.AString)%>
<%:Html.LabelFor(model => model.ADate)%>
<%:Html.EditorFor(model => model.ADate)%>
<%:Html.LabelFor(model => model.AnotherDate)%>
<%:String.Format("{0:d}", Model.AnotherDate)%>
这存储在Shared / EditorTemplates文件夹中。我在同一位置也有一个DateTime.ascx编辑器模板,以覆盖所有日期时间字段。
正如您在上面的代码中看到的,其中一个日期字段使用EditorFor
作为日期字段,另一个则不然。但是,它们都呈现相同,这使我相信没有访问DateTime编辑器。有什么我做错了吗?似乎应该可以这样做。
我在视图中直接使用了DateTime编辑器,它运行正常。
感谢您的帮助或见解。
答案 0 :(得分:0)
我已经在MVC 2和MVC 3下尝试了你的场景,在MVC 3下它可以正常运行。
我正确理解你的共享中有EditorTemplates
,其中包含ComplexModel.ascx
编辑器,并且在ComplexModel.ascx
你打电话Html.EditorFor(m => m.ADate)
内。
我不确定有关MVC 2的更新,但MVC 3确实有效。
答案 1 :(得分:0)
我发现了问题:
我在模型中为数据注释设置了部分元数据类(我正在使用实体框架)。我的部分日期视图适用于?DateTime(DateTime.ascx)
我将所有日期的DataType属性设置为[DataType(DataType.Date)]
而不是[DataType(DataType.DateTime)]
。
更改该属性会将其全部修复。