1

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);
}
4

0 に答える 0