Модель:
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
.