【发布时间】:2021-04-01 13:09:54
【问题描述】:
我有包含树值的 ENUM 类
public enum TicketStatus
{
Open = 1,
OnHold= 2,
Close= 3
}
默认情况下,创建帖子时,它会分配第一个值,即Open。
但是一旦我将值更改为OnHold (2) 或Close (3),当我调用编辑方法时,它总是显示Open (1)。
<div class="form-group row">
<div class="col-4">
<label>Status Tiketa</label>
</div>
<div class="col-8">
<select asp-for="@Model.Ticket.Status" asp-items="Html.GetEnumSelectList<VmSTicketing.Models.Enum.TicketStatus>()" class="form-control"></select>
</div>
</div>
我试图改变这个像
根据这篇文章的一些答案,我改变了一些类似
@Html.DropDownList("TicketStatus",
Html.GetEnumSelectList<VmSTicketing.Models.Enum.TicketStatus>(),
"Select Gender", new { @class = "form-control" })
还有这个
@Html.DropDownListFor(m => m.Ticket.Status, Html.GetEnumSelectList<VmSTicketing.Models.Enum.TicketStatus>())
这是控制器动作
public IActionResult Upsert(int? Id)
{
TicketVM ticketVM = new()
{
Ticket = new Ticket(),
TicketTypeList = _unitOfwork.TicketType.GetAll().Select(i => new SelectListItem
{
Text = i.Name,
Value = i.Id.ToString()
}),
ApplicationUser = new ApplicationUser(),
Client = new Client()
};
var userName = User.FindFirstValue(ClaimTypes.Email);
var user = HttpContext.User.Identity.Name;
ticketVM.Ticket.ApplicationUser = _db.ApplicationUsers.FirstOrDefault(u => u.Email == userName);
if (Id == null)
{
return View(ticketVM);
}
ticketVM.Ticket = _unitOfwork.Ticket.Get(Id.GetValueOrDefault());
if (ticketVM.Ticket == null)
{
NotFound();
}
return View(ticketVM);
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Upsert(TicketVM ticketVM)
{
var userName = User.FindFirstValue(ClaimTypes.Email);
var user = HttpContext.User.Identity.Name;
if (ticketVM.Ticket.UserId > 0)
{
var usert = _db.ApplicationUsers.FirstOrDefault(u => u.Id == ticketVM.Ticket.UserId);
ticketVM.Ticket.ApplicationUser = usert;
}
else
{
var usert = _db.ApplicationUsers.FirstOrDefault(u => u.Email == userName);
ticketVM.Ticket.ApplicationUser = usert;
}
if (ModelState.IsValid)
{
if (ticketVM.Ticket.Id == 0)
{
ticketVM.Ticket.Status = TicketStatus.Otvoren.ToString();
_unitOfwork.Ticket.Add(ticketVM.Ticket);
}
else
{
//ticketVM.Ticket.Status = ((TicketStatus)Convert.ToInt32(ticketVM.Ticket.Status)).ToString();
_unitOfwork.Ticket.Update(ticketVM.Ticket);
if (ticketVM.Ticket.Status.ToString() == "1")
{
ticketVM.Ticket.Status = "Otvoren";
}
else if (ticketVM.Ticket.Status.ToString() == "2")
{
ticketVM.Ticket.Status = "NaCekanju";
}
else if (ticketVM.Ticket.Status.ToString() == "3")
{
ticketVM.Ticket.Status = "Zatvoren";
}
}
_unitOfwork.Save();
return RedirectToAction(nameof(Index));
}
else
{
ticketVM.TicketTypeList = _unitOfwork.TicketType.GetAll().Select(i => new SelectListItem
{
Text = i.Name,
Value = i.Id.ToString()
});
if (ticketVM.Ticket.Id != 0)
{
ticketVM.Ticket = _unitOfwork.Ticket.Get(ticketVM.Ticket.Id);
}
}
return View(ticketVM);
}
这可能是什么问题?我做错了什么?
【问题讨论】:
标签: c# entity-framework .net-core asp.net-core-mvc