Brent
Brent

Reputation: 4876

MVC with TextBoxFor having same id within loop

I would like to have a table within a form, with an update button. Ideally each row would be a form, but that doesn't fit html spec.

my view looks like this

@model IEnumerable<DabTrial.Models.ManageFilesModel>

@foreach(var item in Model) {
<tr>
    <td>
        @Html.TextBoxFor(modelItem=>item.Name)
        ....

when I look at the markup, the inputs within each row for the same property have the same id

<input id="item_Name" type="text" value="ParentGuardianPMH.pdf" name="item.Name">
...
<input id="item_Name" type="text" value="ParentGuardianMMH.pdf" name="item.Name">

which is obviously invalid - how should I be doing this. Thank you

Upvotes: 2

Views: 6496

Answers (2)

xurca
xurca

Reputation: 2426

you need such thing

@for(int i=0; i< Model.Count(); i++)
{
  @Html.TextBoxFor(item => item[i].Name)
}

read this post about model binding to a list http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

Upvotes: 4

Rapha&#235;l Althaus
Rapha&#235;l Althaus

Reputation: 60493

use a for loop, not a foreach, and you'll have distinct id.

Upvotes: 2

Related Questions