Обновление объекта MVC 3 с помощью свойства DateTime - PullRequest
0 голосов
/ 13 марта 2012

У меня есть проект MVC 3, который использует Entity Framework.Я могу успешно обновлять сущности следующим образом:

[HttpPost]
publiv RedirectResult Update(MyEntity entity)
{
    if(ModelState.IsValid)
    {
        this.entityRepository.Update(entity);
        return RedirectResult(".../Admin");
    }
    return RedirectResult(".../UnssuccessfullOperation");
}

Теперь проблема возникла, когда я добавил свойство DateTime в мои сущности.Если я не добавлю @ Html.HiddenFor для своего свойства DateTime, дата моей сущности будет 01.01.0001 (или DateTime.Min), которая, очевидно, не может быть сохранена в базе данных.Если я добавляю скрытый ввод, дата отображается, но при обновлении мой ModelState недействителен, и я предполагаю, что это связано с тем, что datetime передается в виде строки.

Теперь есть одно решение, но оно кажется немного странным - не отображать Html.Hidden в представлении и использовать дату и время из репозитория entity:

entity.DateSomething = this.entityRepository.GetSingle(entity.ID).DateSomething;

, но этоне кажется очень правильным.Есть ли другие лучшие варианты в этом случае?

1 Ответ

1 голос
/ 13 марта 2012

Если я добавляю скрытый ввод, дата отображается, но при обновлении мой ModelState недействителен, и я предполагаю, что это связано с тем, что datetime передается в виде строки.

Нет, я подозреваю, что это связано с настройкой культуры в вашем приложении и форматом даты и времени, используемым в скрытом поле.Они, вероятно, не совпадают.

Взгляните на следующую запись в блоге , которая охватывает различные проблемы, возникающие при разборе дат, и то, как формат будет зависеть от того, выполняете ли вы запрос GET или POST, а также возможностьнаписать пользовательский механизм связывания для использования фиксированного формата дат.

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