在 ASP.NET Core 中,我有基于其他屬性計算的屬性,例如,我有
公開課培訓{
public int TrainingID { get; set; }
[Required]
[Display(Name ="Course Code")]
public string CourseID { get; set; }
[Required]
[Display(Name ="Employee Id")]
public int EmployeeID { get; set; }
[Required]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[Display(Name = "Initial Date")]
public DateTime InitialDate { get; set; }
[Required]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[Display(Name = " Refrasher Date")]
public DateTime RefrasherDate { get; set; }
[Required]
[Display(Name = "InitialCertificate")]
public string InitialCertificate { get; set; }
[Required]
[Display(Name = "Refrasher Certificate")]
public string RefrasherCertificate { get; set; }
[Required]
[Display(Name = "Updated By")]
public int UpdatedBy { get; set; }
[Display(Name = "Training Status")]
public string TrainingStatus { get; set; }
}
如果 (currentdate - RefrasherDate > 90days) 如果 <=90 和 >30,則 TrainingStatus 將是“Warning”,如果 <=30,則是“Expired”。當前日期未存盤在資料庫中,但其今天的日期和 TrainingStatus 根據計算出的日期動態更改。
uj5u.com熱心網友回復:
一種方法是覆寫 DisplayStatus'get 這樣的:
public string TrainingStatus
{
get
{
var totoalDays = (DateTime.Now - RefrasherDate).TotalDays;
if (totoalDays > 90) return "Current";
if (totoalDays <= 90 && totoalDays > 30) return "Warning";
if (totoalDays < 30) return "Expired";
return "";
}
set { }
}
uj5u.com熱心網友回復:
嗯,這就是您的模型,基本上是定義將用作資料庫表的新自定義型別的類。它應該在Models目錄下定義。您需要創建某種輔助控制器/類來進行此類驗證。
定義控制器
//Assuming Training is in the Models directory
using FolderName.Models;
using FolderName.DatabaseContext;
using System.Collections.Generic;
using System.Linq;
public class TrainingController
{
public static void ChangeStatus(DatabaseContext myContext)
{
//Query your database context to retrieve current information
//for Training class as a list
List<Training> myTraining = myContext.Training.ToList();
//Define TrainingStatus status
foreach(var training in myTraining)
{
if((currentDate - training.RefrasherDate) > 90)
training.TrainingStatus = "Current";
if((currentDate - training.RefrasherDate) <= 90)
training.TrainingStatus = "Warning";
if((currentDate - training.RefrasherDate) <= 30)
training.TrainingStatus = "Expired";
}
myContext.SaveChanges();
}
//Rest of the code
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/401513.html
標籤:C# asp.net-mvc
