我使用EntityFramework CodeFirst MVC3。在我的模型中,我定义了一个像这样的可空属性:
public class PostFullViewModel
{
public int PostID { get; set; }
...
public DateTime? PublishDate { get; set; }
...
}
这是我的创建动作控制器:
public ActionResult Create()
{
PostCreateViewModel viewModel = new PostCreateViewModel
{
PostToCreate = new PostFullViewModel(),
Authors = m_AccountBusiness.GetAllUsers().Select(x => new SelectListItem { Text = x.UserName, Value = x.UserID.ToString() })
};
return View(viewModel);
}
在我的创建视图中:
@model PostCreateViewModel
@using (Html.BeginForm())
{
@Html.LabelFor(model => model.PostToCreate.PublishDate)
@Html.EditorFor(model => model.PostToCreate.PublishDate)
...
}
我在EditorFor专栏上遇到错误:
The model item passed into the dictionary is null, but this dictionary requires a non-null model item of type 'System.DateTime'.
如何让我的创建视图显示PublishDate为空?
感谢。
答案 0 :(得分:2)
我猜您为DateTime类型(~/Views/Shared/EditorTemplates/DateTime.cshtml
或~/Views/XXX/EditorTemplates/DateTime.cshtml
定义了一个自定义编辑器模板,其中XXX
是您当前的控制器名称),强烈键入DateTime
这样的DateTime?
:
@model DateTime
...
因此,您可以将其类型更改为DateTime?
。
答案 1 :(得分:0)
我想作为Darin,BTW当我假设PostCreateViewModel类如下所示时,我在创建视图中没有任何问题
public class PostCreateViewModel
{
public PostFullViewModel PostToCreate { get; set; }
}