基於達林對我的問題的回答Ho to display multiple checkbox selection based on user's selection from dropdown? 我正在顯示基於下拉選擇的多個複選框。如何使用FormCollection收集多個複選框值?
現在,一旦用戶發佈了我的頁面上的表單(具有多個輸入),我就會使用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 });
});
有沒有使用FormCollection的方法?我改爲FormCollection來實現驗證碼。 – updev 2012-04-24 17:25:43
是的,有,但準備編寫可怕的代碼,如:'var flag1 = fc [「BusinessSubCategories [0] .Flag」]''。這就是說:永遠不要那樣做。永遠不要使用FormCollection。我沒有看到與驗證碼有什麼關係。如果您需要一些附加信息,請在您的視圖模型上添加一個屬性,並使用正確的名稱,然後讓您的控制器操作採用此視圖模型並忘記FormCollection。 – 2012-04-24 17:27:43