【发布时间】:2020-07-08 06:51:52
【问题描述】:
我正在构建一个 Razor Pages Web 应用程序,用于将用户注册到考试中。 ExamRegistration 模型有一个名为 MaxDateForExam 的字段可以为空,因为这是以后添加到现有数据库的新功能。创建考试时,我想在 OnPost 之后用一个值填充此字段。
如果用户是第一次申请考试,只需获取ExamDate 并添加 1 年。在随后的注册(用户未通过考试)中,我不想创建新的MaxDate,而是从第一次注册记录中获取MaxDate。
我的 ExamRegistrations 模型具有以下属性
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? MaxDateForExam { get; set; }
在我将某人注册到新考试的页面上,我需要进行检查:
如果这个人是第一次注册,我会抓住
ExamDate并为其添加一年,然后填充MaxDateForExam场地。如果用户注册的考试不是我第一次需要的考试 让应用程序进入 ExamRegistration 表并获取
现有MaxDateForExam先前注册的值(如果
一个存在)。这是我目前所拥有的。
我只是找不到正确的代码来提取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....如果我需要标记其他内容(第一次使用伟大资源的用户),请告诉我。
谢谢
【问题讨论】:
标签: entity-framework-core razor-pages