首页 > 解决方案 > 为什么我的 ENUM 值显示为 0 而不是显示文本类型的默认值

问题描述

我有点困惑,并试图了解错误在哪里。我想在用户提交票证时为票证分配默认值,它应该默认Open显示在索引页面中,Open但我在索引页面中得到 0。

在此处输入图像描述

这是我的价值ENUM

 public enum TicketStatus
    {
        Otvoren = 1,
        NaCekanju = 2,
        Zatvoren = 3
    }

我为我的模型属性分配了默认值

public TicketStatus Status { get; set; } = TicketStatus.Otvoren;

数据表渲染部分

function loadDataTable() {
    dataTable = $('#tblData').DataTable({
        "ajax": {
            "url": "/Manager/Ticket/GetAll"
        },
        "columns": [
            { "data": "description", "width": "15%" },
            { "data": "dateAndTime", "width": "15%" },
            { "data": "ticketType.name", "width": "15%" },
            //{ "data": "user.name", "width": "15%" },
            //{ "data": "client.name", "width": "15%" },
            { "data": "status", "width": "15%" },
            { "data": "answered", "width": "15%" },
            {
                "data": "id",
                "render": function (data) {
                    return `
                            <div class="text-center">
                                <a href="/Manager/Discussion/OpenDiscussion/${data}" class="btn btn-primary text-white" style="cursor:pointer">
                                    <i class="fas fa-comments"></i>
                                </a>
                                <a href="/Manager/Ticket/Details/${data}" class="btn btn-success text-white" style="cursor:pointer">
                                    <i class="fas fa-info"></i>
                                </a>
                            </div>
                           `;
                }, "width": "20%"
            }
        ]
    });
}

有谁知道我在哪里犯了错误?这有什么问题?抱歉,我是 asp.net 核心的初学者,也许 qestion 看起来很愚蠢,但我花了好几个小时来理解这里出了什么问题。

干杯!

更新

[HttpGet]
        public IActionResult GetAll()
        {

            var obj = _unitOfwork.Ticket.GetAll(includeProperties: "TicketType,ApplicationUser");
            return Json(new { data = obj });
        }

这是一切开始的创建动作

 public IActionResult Upsert(int? Id)
        {

            TicketVM ticketVM = new TicketVM()
            {
                Ticket = new Ticket(),
                TicketTypeList = _unitOfwork.TicketType.GetAll().Select(i => new SelectListItem
                {
                    Text = i.Name,
                    Value = i.Id.ToString()
                })
            };

            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)
        {
            if (ModelState.IsValid)
            {
                if (ticketVM.Ticket.Id == 0)
                {
                    _unitOfwork.Ticket.Add(ticketVM.Ticket);
                }
                else
                {
                    _unitOfwork.Ticket.Update(ticketVM.Ticket);
                }
                _unitOfwork.Save();
                return RedirectToAction(nameof(Index));
            }
            return View(ticketVM);
        }

标签: c#entity-frameworkasp.net-core-mvc

解决方案


我发现错误在哪里。在发生克里特岛行动的控制器中,我需要添加如下内容:

ticketVM.Ticket.Status = TicketStatus.Otvoren.ToString();

推荐阅读