首页 > 解决方案 > 为什么我没有将对象引用设置为对象的实例

问题描述

我有详细信息视图,并且作为管理员在详细信息视图中我希望能够仅更新票证的状态,仅此而已。当我在控制器中创建类似这样的函数时

public IActionResult UpdateStatus(int ticketId, string status)
        {
            var ticket = _unitOfwork.Ticket.Get(ticketId);
            ticket.Status = status;
            _unitOfwork.Ticket.Update(ticket);
            return View();
        }

我收到错误消息

Object reference not set to an instance of an object.

在我的模型中,我有这样的东西

 public class Ticket
    {
        [Key]
        public int Id { get; set; }

        [Display(Name = "Opis")]
        public string Description { get; set; }

        [Display(Name = "Datum i vrijeme slanja")]
        public string DateAndTime { get; set; } = DateTime.Now.ToString("dd/MM/yyyy HH:mm");

        [Display(Name = "Datum i vrijeme zavrsetka")]
        public DateTime Answered { get; set; }

        [Display(Name = "Vrsta tiketa")]
        public int TicketTypeID { get; set; }

        [ForeignKey("TicketTypeID")]
        public virtual TicketType TicketType { get; set; }

        public string UserId { get; set; }

        [ForeignKey("UserId")]
        public virtual ApplicationUser ApplicationUser { get; set; }

        public int? ClientId { get; set; }
        [ForeignKey("ClientId")]
        public virtual Client Client { get; set; }

        public string Status { get; set; } = TicketStatus.Otvoren.ToString();

TicketStatus 是我从这里得到的 ENUM 值

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

在详细信息视图中我有这个结构

@model VmSTicketing.Models.ViewModels.TicketVM
@using VmSTicketing.Utility
@{
    ViewData["Title"] = "Details";
    Layout = "~/Views/Shared/AdminLTE/_Layout.cshtml";
}

<h2 class="text-info">Pregled tiketa</h2>

<div class="p-4 border rounded">

    <div class="form-group row">
        <div class="col-2">
            <label>Vrsta tiketa</label>
        </div>
        <div class="col-5">
            <input asp-for="Ticket.TicketType.Name" disabled class="form-control" />
        </div>
    </div>
    <div class="form-group row">
        <div class="col-2">
            <label>Opis</label>
        </div>
        <div class="col-5">
            <textarea asp-for="Ticket.Description" disabled class="form-control"></textarea>
        </div>
    </div>
    <div class="form-group row">
        <div class="col-2">
            <label>Datum i vrijeme slanja</label>
        </div>
        <div class="col-5">
            <input asp-for="Ticket.DateAndTime" disabled class="form-control" />
        </div>
    </div>
    <div class="form-group row">
        <div class="col-2">
            <label>Klijent</label>
        </div>
        <div class="col-5">
            <input asp-for="Client.Name" disabled class="form-control" />
        </div>
    </div>
    <div class="form-group row">
        <div class="col-2">
            <label>User</label>
        </div>
        <div class="col-5">
            <input asp-for="Ticket.ApplicationUser.Name" disabled class="form-control" />
        </div>
    </div>
    @if (User.IsInRole(SD.Role_Admin))
    {
        <div class="form-group row">
            <div class="col-2">
                <label>Status Tiketa</label>
            </div>
            <div class="col-5">
                <select asp-for="@Model.Ticket" asp-items="Html.GetEnumSelectList<VmSTicketing.Models.Enum.TicketStatus>()" class="form-control"></select>
            </div>
        </div>
        <div class="form-group">
            <a asp-area="Manager" asp-action="UpdateStatus"  asp-controller="Ticket" class="btn btn-primary">Update</a>
        </div>
    }

    <br />
    <div class="form-group">
        <a asp-action="Index" class="btn btn-success">Back to List</a>
    </div>

</div>

我在哪里犯错了?为什么status被识别为 NULL 对象?

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

解决方案


推荐阅读