为什么我的模型中的这个值在我的控制器中使用时返回null?(ASP.NET MVC)

问题描述 投票:0回答:1

在我的模型中,我有一个叫做 itemCheck 的 bool 值。

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; }
    }

然后我在主控制器中把它初始化为false:

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;
        }

然后我在我的视图中使用它作为一个布尔值来表示一个复选框是否被选中。

@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: '对象引用未设置为对象的实例'。"

我不明白为什么我的程序会给我这个错误?

c# asp.net asp.net-mvc asp.net-mvc-4 model-view-controller
1个回答
0
投票

更改。

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

改为:

 @Html.CheckBoxFor(Model => Model.ItemList.itemCheck, false)
© www.soinside.com 2019 - 2024. All rights reserved.