【问题标题】:Send checkbox values from View to Action via View Model通过视图模型将复选框值从视图发送到操作
【发布时间】:2021-10-25 02:19:48
【问题描述】:

我想使用 viewmodel 将复选框值从 View 发送到 Action。

你能帮我吗?

对不起我糟糕的英语

【问题讨论】:

  • 请提供您目前拥有的示例代码。描述一个具体问题更有帮助。您在将复选框值发布到控制器时遇到问题吗?提交时当前发送的视图是什么?
  • 你好@柠檬先生你试过解决方案吗?

标签: asp.net asp.net-mvc asp.net-core model-view-controller checkbox


【解决方案1】:

您可以尝试这种方式来满足您的要求

查看模型:

public class CheckBoxViewModel
{
    public List<Plans> plans { get; set; }
}

public class Plans
    {

        public int PlanId { get; set; }
        public string PlanName { get; set; }
        public bool IsSelected { get; set; }
    }

控制器加载视图模型时:

   public IActionResult LoadCheckBoxFromViewModel()
        {
            var plan = new List<Plans>()
            {
                new Plans(){ PlanName = "Plan A",PlanId =1, IsSelected= false},
                new Plans(){ PlanName = "Plan B",PlanId =2, IsSelected= false},
                new Plans(){ PlanName = "Plan C",PlanId =3, IsSelected= false},
                new Plans(){ PlanName = "Plan D",PlanId =4, IsSelected= false}

            };

            var model = new CheckBoxViewModel();
            model.plans = plan;
            return View(model);
        }

注意:我已经加载了 checkbox,其中包含几个要检查的预定义值。如果您需要一个复选框,那么您可以根据您的要求简单地自定义它。在这种情况下,您不需要遍历 plan 复选框列表。

LoadCheckBoxFromViewModel 控制器的视图:

@model CheckBoxViewModel
@{
    ViewData["Title"] = "LoadCheckBoxFromViewModel";
}

<h4>Load CheckBox From ViewModel</h4>
<h4>Submit value to Controller</h4>

<hr />

@using (Html.BeginForm("GetValueFromCheckBoxUsingViewModel", "StackOverFlow"))
{
    for (int i = 0; i < Model.plans.Count; i++)
    {

        @Html.CheckBoxFor(r => Model.plans[i].IsSelected)
        <label>  @Model.plans[i].PlanName</label>


        @Html.HiddenFor(h => @Model.plans[i].PlanId)
        @Html.HiddenFor(h => @Model.plans[i].PlanName)
    }
    <input id="Button" type="submit" value="Save" class="btn btn-primary" />
}

提交复选框时的控制器:

        [HttpPost]
        public IActionResult GetValueFromCheckBoxUsingViewModel(CheckBoxViewModel checkBoxViewModel)
        {

            return View(checkBoxViewModel);
        }

输出:

希望它能指导你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    相关资源
    最近更新 更多