Прежде чем я начну, я смотрел на этот вопрос:Список при переходе от представления модели в ASP.Net MVC
asp.net mvc model binding fails for <List> items in editor template
У меня есть модель, которая выглядит, как так:
public class PartnerListModel
{
public List<PartnersModel> Partners { get; set; }
public PartnerListModel()
{
Partners = new List<PartnersModel>();
}
}
И тогда мой PartnersModel выглядит так:
public class PartnersModel
{
public int ID { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
}
Я передаю партнер sListModel к виду, который выглядит следующим образом:
using (Html.BeginForm("Update", "Partners", FormMethod.Post))
{
@Html.EditorFor(m => m.Partners)
<input type="submit" value="Submit Changes"/>
}
И, наконец, мой шаблон редактора выглядит следующим образом: действие
@model AdminWebsite.Models.Partners.PartnersModel
<div>
<span>
@Html.DisplayFor(m => m.Name)
</span>
<span>
@Html.EditorFor(m => m.IsActive)
</span>
@Html.HiddenFor(m => m.ID)
@Html.HiddenFor(m => m.Name)
</div>
моего контроллера как это так, и код на самом деле удастся попасть в этом действие:
public ActionResult Update(PartnerListModel partners)
Почему мой список внутри модели имеет счет 0? Я не могу найти причину, почему мой пример отличается от принятого ответа на Stack Overflow. Есть ли что-то, что мне не хватает, что объясняет, почему мои данные передаются обратно, не добавляются в список?
Использование инструментов разработчика Chrome, я был в состоянии подтвердить, что у меня есть список, который выглядит примерно следующим образом:
- Partners [0] = .IsActive верно
- Partners [0] .IsActive = ложно
- партнеры [0] .Name = "Привет"
- партнеры [0] = 1 .id
- партнеры [1] .IsActive = ложь т.д.
Любые идеи? Заранее спасибо.
Partners [0] .IsActive в два раза? см. ваш результат хром –
Да, он там дважды. В соответствии с инфраструктурой MVC CheckboxFor создает скрытое поле со значением false, а также поле ввода, потому что оно должно публиковать ложное значение, если флажок не установлен. – AlbertoPL