私の質問に対するDarinの回答に基づいてHo to display multiple checkbox selection based on user's selection from dropdown? 私はドロップダウン選択に基づいて複数のチェックボックスを表示しています。FormCollectionを使用して複数のチェックボックス値を収集するにはどうすればよいですか?
ユーザーが自分のページにあるフォーム(複数の入力を含む)を投稿すると、FormCollectionを使用してすべてのデータを収集します。そして、私が持っている問題は、フォームコレクションから選択したチェックボックスの値をどのように引き出すことができるのですか?チェックボックスの数はドロップダウンとは異なる選択で変わるので、各チェックボックスの値を要求することはできません。
誰でもこの問題を解決できますか?以下に示すように
流れがある:モデル
でプロパティ他の形式の入力が存在する実際のビューでPartialView表示
public class Subcategory
{
public string Name { get; set; }
public int ID { get; set; }
public bool Flag { get; set; }
}
:
<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を使用する方法はありますか?私はCaptchaを実装するためにFormCollectionに変更しました。 – updev
はい、ありますが、 'var flag1 = fc [" BusinessSubCategories [0] .Flag "]'のような恐ろしいコードを書く準備はあります。つまり、決して言わないでください。 FormCollectionを使用しないでください。私はcaptchaとの関係は何か分かりません。追加情報が必要な場合は、適切な名前でビューモデルにプロパティを追加し、コントローラのアクションでこのビューモデルを使用し、FormCollectionを忘れてしまいます。 –