Использование ASP. NET MVC CheckBoxFor в списке - PullRequest
1 голос
/ 06 января 2020

Я пытаюсь создать простой прокручиваемый список флажков в ASP. NET MVC 5. Я установил один флажок, и он корректно отправляет правильное значение в модель. Проверено:

Контроллер

using System.Web.Mvc;
using Checkbox1.Models;

namespace Checkbox1.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            var model = new TestModel
            {
                Checked = true
            };
            return View(model);
        }

        [HttpPost]
        public ActionResult Index(TestModel model)
        {
            return View(model);
        }
    }
}

Вид

@model Checkbox1.Models.TestModel


@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{

    @Html.CheckBoxFor(m => m.Checked, Model.Checked)

    <input type="submit" value="submit" />

}

Модель

namespace Checkbox1.Models
{

    public class TestModel
    {
        public bool Checked { get; set; }

    }

}

Но когда я пытаюсь сделать то же самое с списком * bool , я не могу получить значение bool для передачи обратно в контроллер. Похоже, что модель повторно создается и обнуляется, когда отправляется обратно в контроллер:

Контроллер

using System.Collections.Generic;
using System.Web.Mvc;
using Checkbox2.Models;

namespace Checkbox2.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            var model = new TestModel()
            {
                lstChecked = new List<bool>()
            };

            model.lstChecked.Add(true);

            return View(model);
        }

        [HttpPost]
        public ActionResult Index(TestModel model)
        {
            return View(model);
        }


    }
}

Просмотр

@model Checkbox2.Models.TestModel


@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{

    @Html.CheckBoxFor(m => m.lstChecked[0], Model.lstChecked[0])

    <input type="submit" value="submit" />

}

Модель

using System.Collections.Generic;
using System.Web;

namespace Checkbox2.Models
{
    public class TestModel
    {
        public List<bool> lstChecked;

    }

}

Я хотел бы знать, почему это не работает, но если бы вы могли указать мне на простой рабочий пример прокручиваемый список флажков, которые также будут высоко оценены!

1 Ответ

1 голос
/ 06 января 2020

Чтобы отобразить список флажков, соответствующих bools в вашем списке, вам нужно l oop над списком и добавить флажок с индексом каждого элемента.

foreach(int i = 0; i <+ Model.lstChecked.Count; i++){
    @Html.CheckBoxFor(m => m.lstChecked[i])
}

Кроме того, каково назначение второго параметра в @Html.CheckBoxFor(m => m.lstChecked[0], Model.lstChecked[0])? Первый должен позаботиться о заполнении флажка значением из модели и привязке ввода пользователя для контроллера при отправке.

...