Сохранение DateTime с помощью WebMatrix и Razor - PullRequest
6 голосов
/ 28 февраля 2011

Я занимаюсь разработкой проекта с полем DateTime.

В нем я использую jQuery для пользователя, чтобы выбрать формат даты «дд / мм / гггг», учитывая, что дата не является обязательным полем.

Как сохранить поля DateTime, не обязательные для WebMatrix и Razor?

Я пытался сделать что-то вроде этого:

Я поставил только код, который мне кажется важно, чтобы завершить код может быть найдено здесь

@{
//Get data
string TaskForecastCompletion= Request["txtForecastCompletion"];
string TaskCompletedIn= Request["txtCompletedIn"];

                    DateTime dtForecastCompletion = default(DateTime);
                    if (!Request["txtForecastCompletion"].IsEmpty() && !DateTime.TryParse(Request["txtForecastCompletion"], out dtForecastCompletion))
                    {
                            ModelState.AddError("PrevisaoFinalizacao", "Data de previsão de finalização é inválida. Formato: dd/mm/aaaa");
                    }


                                    sql = @"update Tasks set Title = @0 ,Description = @1 ,ProjectID = @2 ,ForecastCompletion = @3 ,RequestBy = @4 ,CompletedIn = @5 ,Modified = getdate() ,Priority = @6 where ID = @7";
                                    db.Execute(sql, TaskTitle,TaskDescription, ProjectID, dtForecastCompletion, TaskRequestBy, dtTaskCompletedIn, TaskPriority, TaskID);
}

Ошибка при попытке изменить

При конвертации произошло переполнение на сегодняшний день. Описание: Ан необработанное исключение произошло во время выполнение текущей сети запрос. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и откуда он возник в коде.

Сведения об исключении: System.Data.SqlServerCe.SqlCeException: При конвертации произошло переполнение на сегодняшний день.

Ошибка источника:

Строка 62: { Строка 63:
sql = @ "update Задачи установлены Title = @ 0 , Описание = @ 1, ProjectID = @ 2 , ForecastCompletion = @ 3, RequestBy = @ 4, CompletedIn = @ 5, Modified = getdate (), Приоритет = @ 6, где ID = @ 7 "; Строка 64:
db.Execute (SQL, TaskTitle, TaskDescription, ProjectID, dtForecastCompletion, TaskRequestBy, dtTaskCompletedIn, TaskPriority, TaskID); Строка 65:
} Строка 66:

Ответы [ 2 ]

4 голосов
/ 28 февраля 2011

Если ваше поле даты в базе данных имеет значение NULL (не помечено как NOT NULL), вы можете изменить тип данных в C # на Nullable DateTime :

 DateTime? dtForecastComplete = null;

Теперь вы можете передавать (и извлекать) нулевое значение в / из базы данных.

0 голосов
/ 28 февраля 2011

Если бы вы хотели «быстрое и грязное» решение, я бы вставил DateTime.MinValue в качестве начального значения и протестировал его при повторном отображении, чтобы сделать его пустым.заключается в динамическом построении оператора вставки и списка значений, чтобы исключить его из списка, если значение пустое.

...