如何将复选框值传递给 ASP.NET MVC 中的控制器

How to pass checkbox value to controller in ASP.NET MVC

我正在使用

@Html.CheckBoxFor(model => model.AllowOrder, new { id = "allowOrder"})

现在我想将它的值(无论是选中还是未选中)传递给控制器​​。我正在使用 html.BeginForm 将数据发回控制器。每次我在操作方法中将其值设置为 null 时。操作方法具有以下示例代码。

public ActionResult index(bool isChecked)
{
    // code here
}

isChecked 属性 始终作为 null 传入。请任何帮助。 TIA.

如果您不想return 控制整个数据模型,而只想控制一个值,请参见下面的代码:

public IActionResult IndexTest()
{
    var model = new ViewModel() { AllowOrder = true };
    return View(model);
}

[HttpPost]
public IActionResult IndexTest(bool isChecked)
{
    // your code here...
    return View("IndexTest", new ViewModel() { AllowOrder = isChecked} );
}

使用 onclick() 跟踪复选框状态:

@model ViewModel

<script>
    function onStateChange() {
        var item = document.getElementById('allowOrder');
        var chk = false;
        if (item.checked) {
            chk = true;
        }
        document.getElementById('isChecked').value = chk;
    };
</script>
@using (Html.BeginForm())
{
    @Html.Hidden("isChecked", Model.AllowOrder)
    @Html.CheckBoxFor(r => Model.AllowOrder, new { id = "allowOrder", @onclick = "onStateChange()" })
    <input id="Button" type="submit" value="Save" />
}

查看:

@model <specifyModelhere>
@using(Html.BeginForm("index","<YourControllerNameHere>",FormMethod.Post))
   {
        @Html.CheckBoxFor(r => Model.AllowOrder)
        <input id="Button" type="submit" value="Save" />
    }

控制器:

public ActionResult index(<YourModelNameHere> model)
{
    var ischecked = model.AllowOrder;
    // code here
}

这样当你提交表单的时候,整个模型都会回发给你,你可以在controller方法中接收到