我不知道該怎么做。我的票物件有一個名為 TicketCreationTime 的 DateTime 屬性,該屬性默認為 1/1/0001 上午 12 點;每次從票證控制器呼叫它的編輯物體函式時。

我怎樣才能做到這一點,以便 TicketCreationTime 在對其票證物件進行更改時保持不變?那樣的話,創建時間總是和制作票的時間一樣嗎?
工單物件
public class Ticket
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime TicketCreationTime { get; set; }
public DateTime DueDate { get; set; }
public DateTime TicketUpdatedTime { get; set; }
public Ticket()
{
}
}
TicketsController 創建
public async Task<IActionResult> Create([Bind("ID,Name,Description,TicketCreationTime,DueDate,TicketUpdatedTime,CurrentStatus,Importance")] Ticket ticket)
{
if (ModelState.IsValid)
{
DateTime StartTime = DateTime.Now;
ticket.TicketCreationTime = StartTime;
ticket.TicketUpdatedTime = StartTime;
_context.Add(ticket);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(ticket);
}
TicketsController 編輯
public async Task<IActionResult> Edit(int id, [Bind("ID,Name,Description,TicketCreationTime,DueDate,TicketUpdatedTime,CurrentStatus,Importance")] Ticket ticket)
{
if (id != ticket.ID)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
ticket.TicketUpdatedTime = DateTime.Now;
_context.Update(ticket);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!TicketExists(ticket.ID))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index));
}
return View(ticket);
}
uj5u.com熱心網友回復:
這個問題就是為什么應用模型的概念是非常有用的,你也可以識別為“M”的MVC。
模型類/物件可能看起來像 EF 物體類/物件,但它與實際資料庫內容分開存在。
模型可用于顯示資料(您可能并不總是希望顯示所有資料,或者您可能希望以其他方式顯示它的存盤方式)和/或模型可用于處理接收到的資料從呈現的網頁。
在這種情況下,Model 類將擁有 Entity 類中的大部分屬性,但Ticket....Time屬性除外。當收到 Edit POST 命令時,您需要從 DbContext 中檢索 Entity 物件,使用 Model 物件中的屬性更新它,然后保存 Entity 物件。
示例代碼:
public class TicketUpdateModel
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime DueDate { get; set; }
}
[HttpPost]
public async Task<IActionResult> Edit(TicketUpdateModel model)
{
var ticket = await _context.Tickets.FindAsync(model.Id);
if (ModelState.IsValid)
{
try
{
ticket.TicketUpdatedTime = DateTime.Now;
ticket.Name = model.Name;
ticket.Description = model.Description;
ticket.DueDate = model.DueDate;
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
// ....
}
return RedirectToAction(nameof(Index));
}
return View(ticket); // or perhaps use a TicketDisplayModel class
}
uj5u.com熱心網友回復:
使用DateTime?,而不是DateTime用于TicketCreationTime。如果它為空,則更新它:
ticket.TicketUpdatedTime = DateTime.Now;
if (ticket.TicketCreationTime is null)
{
ticket.TicketCreationTime = ticket.TicketUpdatedTime;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/396436.html
標籤:C# asp.net-mvc 数据库 约会时间 票务系统
上一篇:如何在圖片旁邊放置文字
