Как я могу получить текст и значение CheckBox в данных коллекции формы в контроллере?
Правильный подход заключается в использовании модели вида вместо этого IEnumerable<SelectListItem>
. Таким образом, в основном ваша модель может выглядеть следующим образом:
public class BrandViewModel
{
public string Text { get; set; }
public bool Checked { get; set; }
}
, а затем добавить свойство к вашей основной модели представления (один ваш вид сильно типизированных к) типа IList<BrandViewModel>
:
public IList<BrandViewModel> Brands { get; set; }
, а затем это довольно легко:
<td>
@for (var i = 0; i < Model.Brands.Count; i++)
{
@Html.CheckBoxFor(x => x.Brands[i].Checked)
@Html.LabelFor(x => x.Brands[i].Checked, Model.Brands[i].Text)
@Html.HiddenFor(x => x.Brands[i].Text)
}
</td>
и, наконец, вы можете избавиться от любого слабо типизированных FormCollection от вашего действия контроллера и просто взять модель представления:
[HttpPost]
public ActionResult SomeAction(IList<BrandViewModel> brands)
{
...
}
или, если есть и другие свойства, которые необходимо передать ваши действия контроллера может взять на себя основную модель представления:
[HttpPost]
public ActionResult SomeAction(MainViewModel model)
{
// the model.Brands collection will be automatically bound here
...
}
HTTP: //stackoverflow.com/questions/5284395/checkboxlist-in-mvc3-view-and-get-the-checked-items-passed-to-the-controller –