我在我的模型类中定义了以下计算属性,并将其定义为只有获取(没有设置):-
public partial class Visit : IValidatableObject
{
public int AgeInYears
{
get
{
int years = Date.Year - Patient.DateOfBirth.Year;
if (Date.Month < Patient.DateOfBirth.Month || (Date.Month == Patient.DateOfBirth.Month && Date.Day < Patient.DateOfBirth.Day))
{
years--;
}
return years;
}
}
}
但是,如果我尝试添加新访问,则会在
int years = Date.Year - Patient.DateOfBirth.Year;
但是我的问题是为什么 AgeInYears 属性在我创建一个新的访问对象时被执行,尽管我将它定义为get;
out set;
,所以它应该只在我显式调用它时执行?
::::Updated:::: 导致错误的发布操作方法如下所示:-
[HttpPost]
public ActionResult Create(Visit visit)
{
if (ModelState.IsValid)
{
if (Roles.IsUserInRole(visit.DoctorID, "Doctor"))
{
visit.StatusID = repository.GetVisitStatusByDescription("Assinged");
visit.CreatedBy = User.Identity.Name;
visit.Date = DateTime.Now;
repository.AddVisit(visit);
repository.Save();
return RedirectToAction("Index");
}
else
{
return View("NotFound");
}
}
}
::::第二次更新:::: 我的 Get 操作方法如下所示:-
public ActionResult Create(int patientid)
{
Visit visit = new Visit();
visit.PatientID = patientid;
visit.CreatedBy = User.Identity.Name;
visit.Date = DateTime.Now;
return View(visit);
}