Почему это значение в моей модели возвращает ноль при использовании в моем контроллере? (ASP. NET MVC) - PullRequest
0 голосов
/ 29 апреля 2020

в моей модели у меня есть значение bool itemCheck:

public class Item
    {       
        public Array userDataItems { get; set; }

        public char[] delimiterChar { get; set; }

        public bool itemCheck { get; set; }

    }

Моя viewModel, связывающая модель элемента с контроллером:

public class CategoryItemViewModel
    {
        public Item ItemList { get; set; }

        public Category CategoryList { get; set; }
    }

которую я затем инициализирую в моем главном контроллер как ложный:

public ActionResult Index()
        {
            CategoryItemViewModel CIVM = new CategoryItemViewModel();
            CIVM.ItemList = GetItemModel();
            CIVM.CategoryList = GetCategoryModel();
            return View(CIVM);
        }

 public Item GetItemModel()
        {
            var dataFileItems = Server.MapPath("~/App_Data/Item.txt");

            Item iModel = new Item()
            {
                userDataItems = System.IO.File.ReadAllLines(dataFileItems), //Items Text File
                delimiterChar = new[] { ',' },
                itemCheck = false,
            };

            return iModel;
        }

Затем я использую его в моем представлении в качестве значения bool, чтобы указать, установлен флажок или нет:

@using (Html.BeginForm("Items", "Items", FormMethod.Post, new { id = "formFieldTwo" }))
        {
            @Html.CheckBoxFor(m => m.ItemList.itemCheck, false)
        }

И, наконец, я пытаюсь получить доступ к этому переменная 'itemCheck', которая должна быть установлена ​​в 'false' в моем ActionResult:

[HttpPost]
        public ActionResult Items(string ItemDescription, CategoryItemViewModel m)
        {

            bool originalValue = m.ItemList.itemCheck;

            var FkFile = Server.MapPath("~/App_Data/ForeignKeyValue.txt");

            var Fk = System.IO.File.ReadAllText(FkFile);

            var dataFileItems = Server.MapPath("~/App_Data/Item.txt");

            var numberOfLinesItems = System.IO.File.ReadLines(dataFileItems).Count();

            var textFileDataItems = ItemDescription + "," + numberOfLinesItems + "," + Fk + "," + originalValue + Environment.NewLine;

            System.IO.File.AppendAllText(dataFileItems, textFileDataItems);

            return View();
        }

Однако я получаю следующую ошибку в строке 'bool originalValue = m.ItemList.itemCheck;' :

"System.NullReferenceException: 'Ссылка на объект не установлена ​​для экземпляра объекта.' "

Я не понимаю, почему моя программа выдает мне эту ошибку?

1 Ответ

0 голосов
/ 29 апреля 2020

Изменение:

 @Html.CheckBoxFor(m => m.ItemList.itemCheck, false)

К:

 @Html.CheckBoxFor(Model => Model.ItemList.itemCheck, false)
...