根据 Darin 对我的问题Ho 的回答,是否根据用户从下拉列表中的选择显示多个复选框选择? 我根据下拉选择显示多个复选框。
现在,一旦用户在我的页面上发布表单(带有多个输入),我就会使用 FormCollection 收集所有数据。我遇到的问题是如何从 formcollection 中提取那些选定的复选框值?复选框的数量将根据下拉列表中的不同选择而改变,因此我认为请求每个复选框值将不起作用。
谁能帮我解决这个问题。
流程如下图所示:
模型中的属性
public class Subcategory
{
public string Name { get; set; }
public int ID { get; set; }
public bool Flag { get; set; }
}
在存在其他表单输入的实际视图中显示 PartialView:
<div id="checkboxlist">
@if (Model.SubCategories != null)
{
@Html.Partial("SubCategories", Model.SubCategories)
}
</div>
PartialView SubCategories.cshtml
@model IEnumerable<MyProject.Entities.Subcategory>
@{
// we change the HTML field prefix so that input elements
// such as checkboxes have correct names in order to be able
// to POST the values back
ViewData.TemplateInfo.HtmlFieldPrefix = "checkboxlist";
}
<span>subcategory</span>
<div id="subcategories" style="margin-left: 130px;margin-top: -20px;" data-role="fieldcontain">
<fieldset data-role="controlgroup">
@Html.EditorForModel()
</fieldset>
</div>
EditorTemplates Subcategory.cshtml
@model MyProject.Entities.Subcategory
<div class="editor-label">
@Html.CheckBoxFor(c => c.Flag, new { type = "checkbox" })
<label for="@Model.ID">@Model.Name</label>
@Html.HiddenFor(c => c.Flag)
@Html.HiddenFor(c => c.ID)
@Html.HiddenFor(c => c.Name)
</div>
jquery 根据下拉选择显示复选框:
$('#Category').change(function () {
var subcategoriesUrl = $(this).data('subcategoriesurl');
var categoryId = $(this).val();
$('#checkboxlist').load(subcategoriesUrl, { category: categoryId });
});