我正在尝试从复选框列表中检索已选中的复选框值而没有任何成功,下面是我尝试过的代码:
模型
[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>
}
任何想法,我错了所选的复选框值在后期操作中为空,另外我如何限制用户只选择一个复选框,
任何帮助或建议将不胜感激。 感谢
答案 0 :(得分:10)
为您的复选框指定一个名称:
<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();
}
答案 1 :(得分:1)
根据您的代码model.Gender
是一个仅用于创建复选框的列表。
要获取选中的复选框值,您应该在模型中添加新属性,如
public string SelectedGender { get; set; }
在创建复选框时,将复选框命名为新属性名称,即SelectedGender
<input type="checkbox" id="SelectedGender1" name="SelectedGender" class="chkclass" value="@names.Value" />
希望这会对你有所帮助。