在我的创建视图中显示了我的模型的可空属性

时间:2012-01-26 10:07:25

标签: asp.net-mvc asp.net-mvc-3 entity-framework-4 razor

我使用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为空?

感谢。

2 个答案:

答案 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; }

    }