Modelクラス内で次のCalculatedプロパティを定義し、get(設定なし)のみを持つように定義しました:-
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;
}
}
}
しかし、新しい訪問を追加しようとすると、次のエラー(System.NullReferenceExceptionがユーザーコードによって処理されませんでした)が発生します。
int years = Date.Year - Patient.DateOfBirth.Year;
しかし、私の質問は、新しい訪問オブジェクトを作成したときにAgeInYearsプロパティが実行されるのはなぜですか?それget;
をoutと定義してset;
いるのに、明示的に呼び出した場合にのみ実行する必要がありますか?
:::: Updated :::: エラーの原因となっているpostactionメソッドは次のようになります:-
[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");
}
}
}
:::: SECOND UPDATE :::: 私の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);
}