Mam prosty formularz z listą rzeczy w nim i chciałbym wysłać je do kontrolera, ale zabawne jest to, że po prostu nie mogę. Cała reszta przechodzi poprawnie, z wyjątkiem listy. Sprawdziłem ajax połączeń w Firebug i wartości pocztowe są tam tak:Jak mogę zamieścić listę przedmiotów w MVC
Answers[0].IsMissing False
Answers[0].Text Ja
Answers[0].Value 0
Answers[1].IsMissing False
Answers[1].Text Nein
Answers[1].Value 1
Id 1cd14b08-ce3b-4671-8cf8-1bcf69f12b2d
Name Ja/Nein
Mam klasy AnwserScheme o następujących właściwościach:
public string Name { get; set; }
public bool IsMissing { get; set; }
public List<AnswerDisplayItem> Answers { get; set; }
public AnswerScheme()
{
Answers = new List<AnswerDisplayItem>();
}
Mam ten kod wyświetlania:
@for (int i = 0; i < Model.Answers.Count; i++) {
<tr>
<td>
@Html.HiddenFor(model => Model.Answers[i].IsMissing)
@Html.TextBoxFor(model => Model.Answers[i].Value,
new { @class = "inputValue" })
</td>
<td>
@Html.TextBoxFor(model => Model.Answers[i].Text,
new { @class = "inputAnswer" })
</td>
<td>
<span class="span-delete"
data-answer-scheme-id="@Model.Id"
data-answer-id="@Model.Answers[i].Id" >x</span>
</td>
</tr>
}
Mam ten fragment kodu ajax, który jest odpowiedzialny za publikację:
$.ajax({
url: "/AnswerScheme/AddAnswer",
type: "post",
data: $("#formAnswerScheme").serialize(),
success: function (data) {
console.log(data);
$("#divAnswerSchemeContainer").html(data);
}
});
mam akcję odbierania Dodać w moim kontrolera:
[HttpPost]
public PartialViewResult AddAnswer(AnswerScheme answerScheme)
{
...some logic comes here
}
Więc w końcu kontroler otrzyma model, ale tylko proste właściwości, a nie listy. Każda pomoc będzie bardzo ceniona! Twoje zdrowie.
Można sprawdzić ten artykuł na tutorial jak zrobić wiązania zbiorów modelu: http://haacked.com/archive/2008/10/23/model-binding-to-a- list.aspx – Kenneth
Czy używasz MVC3 lub MVC4? Ponieważ twój kod działa poprawnie w nowo utworzonym projekcie MVC4 ... Czy możesz opublikować pełny kod formularza "# formAnswerScheme"? – nemesv
Proszę zaksięguj cały model AnswerScheme i cały formularz z poziomu BeginForm (i dołącz swoją instrukcję @model) –