2016-02-08 5 views
1

Я добавляю флажки к каждому объекту в списке. Когда я пытаюсь вернуть значения обратно контроллеру, список пуст, и я получаю только checkbox bool.передать список объектов из представления в контроллер в asp.net

Может кто-нибудь объяснить мне, как правильно передать список из представления в контроллер.

Я пробовал его с формой, но я не уверен, что это правильный путь.

Я много искал в Google, а также нашел похожие сообщения в stackoverflow, но не смог найти тот, который мне помог.

Посмотреть

@model List<WCFasp.net.WCF.Person> 
@{ 
    ViewBag.Title = "ShowView"; 
} 

@using (Html.BeginForm("Check", "Home")) 
{ 
     for (int i = 0; i < Model.Count(); i++) 
     { 
     <p>@Html.CheckBoxFor(m => m[i].IsChecked) @Html.DisplayFor(m => m[i].Name)</p> 
     } 
     <input id="submit" type="submit" value="submit" /> 
} 

Контроллер

[HttpPost] 
     public ActionResult Check(List<WCF.Person> selectedpersonlist) 
     { 
      //Here I get the empty list 

      return View("ShowSelectedView"); 
     } 

Person

[DataContract] 
    public class Project 
    { 
     [DataMember] 
     public string Name { get; set; } 
     [DataMember] 
     public bool IsChecked { get; set; } 

     public Project(string name, bool isChecked) 
     { 
      this.Name = name; 
      this.IsChecked = isChecked; 
     } 
    } 

L вопрос в конце. Я пропустил голосование, потому что я не профессионал или нет другой причины?

+0

вы получаете какие-либо ошибки? Любые исключения? На ум приходит мысль, что у модели есть конструктор, который mvc плохо обрабатывает – Ric

+0

ошибок. без исключений. Все, что в моем списке просто пусто, за исключением значения флажка. –

+0

Итак, список не пуст? Он содержит только установленные значения для 'IsChecked'? – Ric

ответ

2

Если вы хотите больше свойств заселены в списке, то вы можете использовать скрытые поля для хранения информации:

for (int i = 0; i < Model.Count(); i++) 
{ 
    @Html.HiddenFor(m => m[i].Name) 
    <p>@Html.CheckBoxFor(m => m[i].IsChecked) @Html.DisplayFor(m => m[i].Name)</p> 
} 
Смежные вопросы