Я пытаюсь связать модель с набором динамически генерируемых флажков, чтобы обработать их в действии контроллера, но не могу получить привязку модели. Это сценарий:
Мой класс ViewModel (DocumentAddEditModel) содержит словарь (Dictionary ) со строкой каждой записи, являющейся именем / меткой для каждого флажка, и логическим значением, указывающим, установлен ли флажок:
public class DocumentAddEditModel
{
...
private Dictionary<string, bool> _categoryCheckboxes = new Dictionary<string,bool>();
...
...
public Dictionary<string, bool> CategoryCheckboxes
{
get { return _categoryCheckboxes; }
set { _categoryCheckboxes = value; }
}
...
}
}
В моем контроллере действие, которое обрабатывает запрос GET для формы, заполняет диктонару следующим образом:
public class DocumentsController : Controller
{
[RequiresAuthentication]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Add()
{
DocumentAddEditModel documentAddEditModel = new DocumentAddEditModel();
...
Dictionary<string, bool> categoryCheckboxes = new Dictionary<string, bool>();
...
string[] categories = Enum.GetNames(typeof(Category));
foreach (string category in categories)
categoryCheckboxes.Add(category, false);
documentAddEditModel.CategoryCheckboxes = categoryCheckboxes;
return View(documentAddEditModel);
}
}
В представлении у меня есть следующее для создания флажков:
<% foreach (KeyValuePair<string, bool> categoryCheckbox in ViewData.Model.CategoryCheckboxes)
{%>
<input class="checkbox" type="checkbox" name="CategoryCheckboxes[0].Key" id="<%= categoryCheckbox.Key %>" />
<label class="categoryLabel" for="<%= categoryCheckbox.Key %>"><%= categoryCheckbox.Key %></label>
<% } %>
но я думаю, что это проблема. Не уверен, что должно идти в атрибуте имени. Проблема заключается в том, что после отправки обратно в следующий метод действия в DocumentsController:
[RequiresAuthentication]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(DocumentAddEditModel documentAddEditModel)
{
...
}
documentAddEdit.Model.CategoryCheckboxes всегда имеет значение null. Как настроить это так, чтобы словарь CategoryCheckboxes правильно заполнялся именем и проверенным / непроверенным значением bool для флажков?
Спасибо