I have a for loop set up currently that works. However, the issue comes about when I try to go back to the page it comes up with this error. I am trying to get it to initially present two references that they need to fill out and if they would like to add up to two additional references for this page for a total of 4 people. This is the code I am currently working with. This is the page View:
<div id="reference-list">
@for (int i = 0; i < Model.Order.References.Count; i++)
{
<div class="reference nomination-person" id="reference-@i">
<h3>Reference @(i+1)</h3>
<div class="person-attribute">
@Html.LabelFor(m => m.Order.References[i].Prefix)
@Html.DropDownListFor(m => m.Order.References[i].Prefix, new SelectList(prefixes))
</div>
<div class="person-attribute">
@Html.LabelFor(m => m.Order.References[i].FirstName)
@Html.TextBoxFor(m => m.Order.References[i].FirstName)
@Html.ValidationMessageFor(m => m.Order.References[i].FirstName)
</div>
<div class="person-attribute">
@Html.LabelFor(m => m.Order.References[i].MiddleName)
@Html.TextBoxFor(m => m.Order.References[i].MiddleName)
</div>
<div class="person-attribute">
@Html.LabelFor(m => m.Order.References[i].LastName)
@Html.TextBoxFor(m => m.Order.References[i].LastName)
@Html.ValidationMessageFor(m => m.Order.References[i].LastName)
</div>
<div class="person-attribute">
@Html.LabelFor(m => m.Order.References[i].Suffix)
@Html.DropDownListFor(m => m.Order.References[i].Suffix, new SelectList(suffixes))
</div>
<div class="person-attribute">
@Html.LabelFor(m => m.Order.References[i].Company)
@Html.TextBoxFor(m => m.Order.References[i].Company)
</div>
<div class="person-attribute">
@Html.LabelFor(m => m.Order.References[i].EmailAddress)
@Html.TextBoxFor(m => m.Order.References[i].EmailAddress)
@Html.ValidationMessageFor(m => m.Order.References[i].EmailAddress)
</div>
<div class="person-attribute">
@Html.LabelFor(m => m.Order.References[i].Telephone)
@Html.TextBoxFor(m => m.Order.References[i].Telephone)
@Html.ValidationMessageFor(m => m.Order.References[i].Telephone)
</div>
</div>
}
</div>
<input type="hidden" name="n-references" id="n-references" value="0" />
<div id="add-reference">Add Reference</div>
The controller
private OrderData GetReferencesData(OrderData data, HttpRequestBase request)
{
data.References = new List<Person>();
/* Since there can be many references, iterate along all and create individual
* persona objects for each */
for (int i = 0; i <= request["n-references"].ToInt(); i++)
{
data.References.Add(new Person
{
Prefix = request["Order.Prefix-" + i] ?? "",
Suffix = request["Order.Suffix-" + i] ?? "",
FirstName = request["Order.FirstName-" + i] ?? "",
MiddleName = request["Order.MiddleName-" + i] ?? "",
LastName = request["Order.LastName-" + i] ?? "",
Company = request["Order.Company-" + i] ?? "",
Telephone = request["Order.Telephone-" + i] ?? "",
EmailAddress = request["Order.EmailAddress-" + i] ?? ""
});
}
return data;
}
While in the model it simply has
public List<Person> References;