Проблема с помощником флажка, возвращающим нулевые значения ASP. NET MVC - PullRequest
1 голос
/ 29 апреля 2020

Модель:

 public class ItemModel
    {
        public bool IsChecked { get; set; }
    }

ViewModel:

 public class CategoryItemViewModel
    {
        public List<ItemModel> Item { get; set; }
    }

Контроллер индекса:

public List<ItemModel> GetItemModel()
        {
            //Get fie path
            var ItemFile = Server.MapPath("~/App_Data/Items.txt");

            //Read from the Categories.txt file and display the contents in the List view
            List<ItemModel> item = new List<ItemModel>();

            //Read the contents of Category.txt file
            string txtData = System.IO.File.ReadAllText(ItemFile);

            //Execute a loop over the rows.
            foreach (string row in txtData.Split('\n'))
            {
                if (!string.IsNullOrEmpty(row))
                {
                    item.Add(new ItemModel
                    {
                        IsChecked = Convert.ToBoolean(row.Split(',')[0])
                    });
                }
            }
            return item;
        }

Приведенный выше код в основном читает элементы в текстовом файле, а затем установив их в модель. У меня возникла проблема при желании изменить проверенное значение флажка, так как фактический флажок возвращает нулевое значение, когда я пытаюсь проверить его, код ошибки приведен ниже.

Контроллер для добавления новой позиции с флажок:

[HttpPost]
public ActionResult Item(bool ItemCheck)
        {
            //Get file path of Categories.txt
            var ItemFile = Server.MapPath("~/App_Data/Items.txt");

            var ItemData = ItemCheck + Environment.NewLine;
            System.IO.File.AppendAllText(ItemFile, ItemData);

            return View();
        }

bool ItemCheck возвращает нулевое значение.

Код представления индекса:

 foreach (var item in Model.Item)
 {
   @using (Html.BeginForm("Item", "Item", FormMethod.Post))
   {
     @Html.CheckBoxFor(ItemModel => ItemModel.IsChecked)
   }
 }

Это говорит о том, что ItemModel не содержит определения для IsChecked.

1 Ответ

0 голосов
/ 01 мая 2020

Это может быть связано со следующими причинами

  1. Обращение к неправильному пространству имен для модели ItemModel. Чтобы убедиться, что вы используете правильную модель, используйте @model yourNamespace.ItemModel
  2. Построение проблемы. очистить и построить проект.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...