【问题标题】:Using ASP.NET MVC CheckBoxFor in a list在列表中使用 ASP.NET MVC CheckBoxFor
【发布时间】:2020-01-07 13:08:06
【问题描述】:

我正在尝试在 ASP.NET MVC 5 中创建一个简单的可滚动复选框列表。我有一个复选框可以工作,它正确地将正确的值回传到 model.Checked:

控制器

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

    }

}

但是,当我使用 list 布尔值尝试相同的操作时,我无法将布尔值传递回控制器。看起来模型在被发布回控制器时被重新实例化并被取消:

控制器

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;

    }

}

我想知道为什么这不起作用,但如果您能指出一个简单的可滚动复选框列表的工作示例,我们将不胜感激!

【问题讨论】:

  • Html.CheckListBoxFor 可以工作吗?
  • 我没有看到 Html.CheckListBoxFor 对象。
  • 噢!你是对的,没有CheckListBoxFor 0_O
  • 你会认为他们会有一个。或者可能是 ListBoxFor 中的一个选项,用于显示带有复选框的每个项目。我已经准备好使用 ListBoxFor 了,因为我已经开始工作了。我只是认为 CheckBox 比必须按住控制键进行多项选择要好。

标签: c# asp.net-mvc checkbox


【解决方案1】:

要呈现与列表中的布尔值对应的复选框列表,您需要遍历列表并添加一个带有每个项目索引的复选框。

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

另外,@Html.CheckBoxFor(m =&gt; m.lstChecked[0], Model.lstChecked[0])中第二个参数的作用是什么?第一个应该负责使用模型中的值填充复选框,并在提交时绑定用户对控制器的输入。

【讨论】:

  • 第一个示例使用一个参数,但我仍然对列表有同样的问题(第二个示例)。它仍然没有传回选定的值
  • 只是为了澄清当我使用列表时它仍然没有将数据绑定到用户的输入。
  • 可能是因为该属性缺少获取和设置?
猜你喜欢
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 2015-01-24
  • 2016-09-13
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
相关资源
最近更新 更多