Я создаю веб-приложение Razor Pages, которое регистрирует пользователя на экзамене. Модель ExamRegistration
имеет поле с именем MaxDateForExam
, которое можно обнулять, поскольку это новая функция, добавленная в существующую базу данных позднее. При создании экзамена я хочу заполнить это поле значением после OnPost.
Если пользователь впервые подает заявку на экзамен, просто наберите ExamDate
и добавьте 1 год. При последующих регистрациях (пользователь не сдал экзамен) я не могу sh создать новую MaxDate
, но получаю MaxDate
с первой регистрации.
Моя модель ExamRegistrations имеет следующее свойство
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? MaxDateForExam { get; set; }
На странице, где я регистрирую человека на новый экзамен, мне нужно выполнить проверку:
Если человек регистрируется в первый раз, я бы взял ExamDate
и добавить к нему год, который затем заполнит поле MaxDateForExam
.
Если пользователь регистрируется на экзамен, который проводится не первый раз, мне нужно поместить приложение go в таблицу ExamRegistration и взять
существующий MaxDateForExam
a значение для предыдущей регистрации (если
один существует). Это то, что у меня есть.
Я просто не могу найти правильный код для извлечения значения MaxDateForExam
. Вот часть моего кода ....
public DateTime MaxWriteDate { get; set; }
public Models.ExamRegistration ApplicantRecord { get; set; }
if(ExamRegistration.ExamAttempt == "1st Attempt")
{
MaxWriteDate = ExamRegistration.Exam.ExamDate.AddYears(1);
}
else
{
ApplicantRecord = _context.ExamRegistrations
.Where(m => m.ApplicantID == ExamRegistration.ApplicantID && m.ExamAttempt == "1st Attempt")
.FirstOrDefault();
if(ApplicantRecord == null)
{
MaxWriteDate = ExamRegistration.Exam.ExamDate.AddYears(1);
}
else
{
MaxWriteDate = ApplicantRecord.MaxDateForExam; ???????FAILS????????
}
}
Любое направление, которое я могу получить, было бы полезно. Кажется, ошибка всегда вращается вокруг неспособности преобразовать System.DateTime? в System.DateTime. Вы пропустили актерский состав?
Я отмечу ответ как правильный и я узнал немного больше о C# и обнуляемых типах. Спасибо.
Мне удалось обойти ошибку, используя код:
MaxWriteDate = OldMaxWriteDate.MaxDateForExam ?? DateTime.MinValue;
Спасибо за помощь.
PS .... Если мне нужно отметить что-то еще (первый раз, когда вы пользуетесь большим ресурсом), пожалуйста, дайте мне знать.
Спасибо