Наличие свойства nullable моей модели показано в моем представлении создания - PullRequest
1 голос
/ 26 января 2012

Я использую EntityFramework CodeFirst MVC3. В моей модели я определил обнуляемое свойство как это:

public class PostFullViewModel
{
    public int PostID { get; set; }
    ...
    public DateTime? PublishDate { get; set; }
    ...
}

Вот мой контроллер действий Create:

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 ]

2 голосов
/ 26 января 2012

Полагаю, вы определили пользовательский шаблон редактора для типа DateTime (~/Views/Shared/EditorTemplates/DateTime.cshtml или ~/Views/XXX/EditorTemplates/DateTime.cshtml, где XXX - имя вашего текущего контроллера), который строго типизирован в DateTime вместо DateTime? следующим образом:

@model DateTime
...

Так что вы можете изменить его тип на DateTime?.

0 голосов
/ 26 января 2012

Полагаю, Дарин, кстати, когда я использую класс PostCreateViewModel, как показано ниже, у меня не было проблем при создании представления

public class PostCreateViewModel
    {
        public PostFullViewModel PostToCreate { get; set; }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...