在控制器 mvc 4 中获取复选框值
Posted
技术标签:
【中文标题】在控制器 mvc 4 中获取复选框值【英文标题】:Get checkbox values in controller 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 >
<tr >
<td >
<input type="checkbox" id="@checkBoxId" class="chkclass" value="@names.Value" />
</td>
<td id="@tdId" >
@names.Text
</td>
</tr>
</table>
任何我弄错的想法,选中的复选框值在发布操作中为空,另外我如何限制用户只选择一个复选框,
任何帮助或建议将不胜感激。 谢谢
【问题讨论】:
【参考方案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
的值吗以上是关于在控制器 mvc 4 中获取复选框值的主要内容,如果未能解决你的问题,请参考以下文章
在同一 div id 中获取具有不同类名的复选框值 - jquery mvc
将复选框的值传递给 asp.net mvc4 中的控制器操作
如何设计控制下拉菜单和复选框并排在旁边 MVC 5 Bootstrap 4