事情就像在 Django 中一樣,您可以在不使用 @property 裝飾器更改模型類的情況下添加模型屬性。
我正在嘗試使用 aspnetcore 實作相同的目標
我的意思是我想向模型類添加一些函式,這些函式將回傳一些字串/整數,以便從剃刀視圖訪問它們(例如:model.extraProperty)
@edited 添加更多資訊....
public class Ticket
{
public int Id { get; set; }
public int? AssignedId { get; set; }
public virtual AppUser Assigned { get; set; }
public int StationId { get; set; }
public virtual Station Station { get; set; }
public int FailureId { get; set; }
public virtual Failure Failure { get; set; }
}
public class TicketData
{
public int Id { get; set; }
public int TicketId { get; set; }
public virtual Ticket Ticket { get; set; }
public int TicketStatusId { get; set; }
public virtual TicketStatus TicketStatus { get; set; }
public string comments { get; set; }
}
邏輯是:每次創建工單時,就在使用 Open Status 和工單 ID 參考創建 TicketData 之后
然后創建另一個 TicketData 將狀態更改為 InProcess,然后創建另一個 TicketData 將狀態更改為 Closed
所以我想從工單視圖中訪問最后一個工單狀態
//On Django I would be able to achieved it only adding something like this Ticket.GetStatus()
@property
GetStatus()
{
_context.TicketData.Where(x => x.TicketId == this.Id).LastOrDefault();
}
我希望能得到你們的一些幫助。
謝謝。
uj5u.com熱心網友回復:
我不確定@property 方法。您可能會考慮撰寫自己的 C# 屬性來嘗試實作類似的目標,但讓我提出一個可能的解決方案。
因此,我需要做出一些假設,因為該示例并未詳細說明您如何以及在何處處理所描述的邏輯。假設您正在例如執行邏輯。TicketsController.ProcessTicketAction()它回傳您的 .cshtml 視圖,您實際上需要向視圖的模型傳遞一個表示整個狀態轉換的復雜物件。這可以實作,例如。通過在其中傳遞 TicketData 的集合。
我在這里要做的是創建一個視圖模型類,例如。class TicketModel并在里面定義一個ICollection<TicketData>,現在無論何時何地執行所描述的邏輯,您實際上都會新建一個 TicketData,保存 Ticket ref 和 id。
在您的 .cshtml 視圖代碼中,您可以提取所需的資料,然后使用例如。LINQ 和.OrderByDescending(x => (int) x.TicketStatus).FirstOrDefault().
另一種方法可能是對提出的解決方案進行改造,并將 TicketData 的集合保存在 Ticket 物件中,并將 GetStatus() 方法放入其中:
public class Ticket
{
public int Id { get; set; }
public int? AssignedId { get; set; }
public virtual AppUser Assigned { get; set; }
public int StationId { get; set; }
public virtual Station Station { get; set; }
public int FailureId { get; set; }
public virtual Failure Failure { get; set; }
public ICollection<TicketData> Data { get; set; }
public TicketStatus GetStatus() => Data?.OrderByDescending(x => (int) x.TicketStatus)?.FirstOrDefault()?.TicketStatus;
}
然后假設Ticket你只是Model.GetStatus()在你的視圖.cshtml中使用的模型類。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/475678.html
標籤:C# django asp.net-mvc asp.net 核心 asp.net-mvc-3
下一篇:使用依賴屬性的WPF按鈕快捷鍵
