У меня есть viewmodel под названием ArticleAdmin, который включает в себя список флажков:
public class ArticleAdmin
{
public ArticleAdmin()
{
TopicCheckboxes = new List<TopicCheckbox>();
}
...
public IList<TopicCheckbox> TopicCheckboxes { get; set; }
...
}
ToopicCheckbox имеет свой собственный класс viewmodel, определенный в отдельном файле:
public class TopicCheckbox
{
public bool IsAssociated { get; set; }
public string TopicName { get; set; }
public int TopicId { get; set; }
}
Это хорошо работает для передачи модели в вид:
( ОБНОВЛЕНИЕ : этот метод действия недавно включен для большей ясности)
public ActionResult Edit(int id)
{
//Get the Article entity by id:
var articleEntity = Repository.Articles.Get<Article>(id);
//Map the entity to the viewmodel:
Mapper.CreateMap<Article, ArticleAdmin>();
// 2nd mapping to populate the article's relations to topics:
Mapper.CreateMap<TopicArticle, TopicArticleAdmin>();
var articleData = Mapper.Map<Article, ArticleAdmin>(articleEntity);
//Generate checkboxes (models) to manage associations with topics:
foreach (var topic in Repository.Topics.List())
{
var topicCheckbox = new TopicCheckbox { TopicId = topic.Id, TopicName = topic.Title };
if (Repository.TopicArticles.FindList(x => x.TopicId == topic.Id && x.ArticleId == id).Count() > 0)
topicCheckbox.IsAssociated = true;
//and add them to the viewmodel:
articleData.TopicCheckboxes.Add(topicCheckbox);
}
return View(articleData);
}
... все ожидаемые флажки отображаются в виде:
Но, очевидно, этот список не является привязкой модели к [HttpPost] «Edit» ActionMethod.
Несмотря на то, что список TopicCheckboxes был заполнен в форме, список в ActionMethod пуст.
[HttpPost]
public ActionResult Edit(ArticleAdmin articleData)
... число articleData.TopicCheckboxes равно 0.
Так, как мне заставить привязку модели работать должным образом, чтобы этот список флажков назад в ActionMethod был правильно заполнен на постбэк ?