【问题标题】:Get checkbox values in controller mvc 4在控制器 mvc 4 中获取复选框值
【发布时间】:2013-11-23 07:02:08
【问题描述】:

我正在尝试从复选框列表中检索选中的复选框值,但没有成功,下面是我尝试过的代码:

型号

 [DisplayName("Gender")]
    public IList<SelectListItem> Gender { get; set; }

控制器

 public ActionResult Index()
        {
            AssociateFormViewModel objStudentModel = new AssociateFormViewModel();

            List<SelectListItem> genderNames = new List<SelectListItem>();
            genderNames.Add(new SelectListItem { Text = "Male", Value = "1" });
            genderNames.Add(new SelectListItem { Text = "Female", Value = "2" });
            genderNames.Add(new SelectListItem { Text = "Prefer not to say", Value = "3" });

            objStudentModel.Gender = genderNames;
            return PartialView("AssociateApplicationForm", objStudentModel);

        }

[HttpPost]
        public ActionResult HandleFormSubmit(MembershipFormViewModel model)
        {
            //model not valid, do not save, but return current umbraco page
            if (ModelState.IsValid == false)
            {
                return CurrentUmbracoPage();
            }
 string test = "Gender: " + model.Gender + Environment.NewLine; //getting null here
 return RedirectToCurrentUmbracoPage();
}

查看

@foreach (var names in @Model.Gender)
                {
                var checkBoxId = "chk" + names.Value;
                var tdId = "td" + names.Value;
                    <table width="100%">
                        <tr >
                            <td width="20px">
                                <input type="checkbox" id="@checkBoxId" class="chkclass" value="@names.Value" />
                            </td>
                            <td id="@tdId"  width="100px">
                                @names.Text
                            </td>
                        </tr>
                    </table>

}

任何我弄错的想法,选中的复选框值在发布操作中为空,另外我如何限制用户只选择一个复选框,

任何帮助或建议将不胜感激。 谢谢

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 model controller checkboxlist


    【解决方案1】:

    为您的复选框指定一个名称:

    <input name="gender" type="checkbox" id="@checkBoxId" class="chkclass" value="@names.Value" />
    

    然后接受参数名为gender的字符串数组

    [HttpPost]
            public ActionResult HandleFormSubmit(string[] gender,
                 MembershipFormViewModel model)
            {
                //model not valid, do not save, but return current umbraco page
                if (ModelState.IsValid == false)
                {
                    return CurrentUmbracoPage();
                }
                string test = "Gender: " + model.Gender + Environment.NewLine; //getting null here
                return RedirectToCurrentUmbracoPage();
            }
    

    【讨论】:

    • 不,我指的是性别。 name html 属性用作发布到控制器的值的键。你的 model.Gender 是一个列表
    • 仍然一无所获:(
    • 值在您的string[] gender 参数中。不在您的模型中
    • 但这会给我选中复选框的数量,我想限制用户只选择一个
    • 然后使用单选按钮。复选框用于多选。
    【解决方案2】:

    根据您的代码,model.Gender 是一个仅用于创建复选框的列表。 要获取选中的复选框值,您应该在模型中添加一个新属性,例如

    public string SelectedGender { get; set; }

    在创建复选框时,将复选框命名为新的属性名,即 SelectedGender

    <input type="checkbox" id="SelectedGender1" name="SelectedGender" class="chkclass" value="@names.Value" />
    

    希望这会对你有所帮助。

    【讨论】:

    • 你在检查Controller中model.SelectedGender的值吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 2012-05-10
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多