Asp.net mvc 获取控制器MVC4中的复选框值

Asp.net mvc 获取控制器MVC4中的复选框值,asp.net-mvc,asp.net-mvc-4,model,controller,checkboxlist,Asp.net Mvc,Asp.net Mvc 4,Model,Controller,Checkboxlist,我试图从复选框列表中检索选中的复选框值,但没有成功,下面是我尝试的代码: 模型 [DisplayName("Gender")] public IList<SelectListItem> Gender { get; set; } [DisplayName(“性别”)] 公共IList性别{get;set;} 控制器 public ActionResult Index() { AssociateFormViewModel objSt

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

模型

 [DisplayName("Gender")]
    public IList<SelectListItem> Gender { get; set; }
[DisplayName(“性别”)]
公共IList性别{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();
}
public ActionResult Index()
{
AssociateFormViewModel objStudentModel=新的AssociateFormViewModel();
List genderNames=新列表();
添加(新的SelectListItem{Text=“Male”,Value=“1”});
添加(新的SelectListItem{Text=“Female”,Value=“2”});
Add(new SelectListItem{Text=“preference not say”,Value=“3”});
性别=性别;
返回PartialView(“AssociateApplicationForm”,objStudentModel);
}
[HttpPost]
public ActionResult HandleFormSubmit(MembershipFormViewModel模型)
{
//型号无效,不保存,但返回当前umbraco页面
if(ModelState.IsValid==false)
{
返回当前页面();
}
string test=“Gender:”+model.Gender+Environment.NewLine;//此处为null
返回重定向到当前umbracope();
}
看法

@foreach(@Model.Gender中的变量名称)
{
var checkBoxId=“chk”+names.Value;
var tdId=“td”+名称.值;
@名称。文本
}
如果我理解错误,那么在post操作中,选中的复选框值将为空,我如何限制用户仅选择一个复选框

任何帮助或建议都将不胜感激。
根据您的代码
模型,谢谢。性别是一个仅用于创建复选框的列表。
要获取选中的复选框值,应在模型中添加新属性,如

公共字符串SelectedGender{get;set;}

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

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


希望这对您有所帮助。

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

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

不,我指的是性别。
name
html属性用作发布到控制器的值的键。你的model.Gender是一个仍然一无所获的列表:(值在你的
字符串[]性别
参数。不在您的模型中,但这将提供所选复选框的数量,我想限制用户仅选择一个复选框,然后改用单选按钮。复选框用于多选。您是否在控制器中检查
模型的值。SelectedGender
<input name="gender" type="checkbox" id="@checkBoxId" class="chkclass" value="@names.Value" />
[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();
        }