2

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

1
  • You can explicitly set the ID using one of the TextBoxFor<>() overloads (assuming everything else is the way you want it). You may want to also consider an editor template which accounts for one level of nested objects (it doesn't look like the name elements will match up with what the default model binder expects). Commented Jun 6, 2013 at 6:35

2 Answers 2

4

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

Sign up to request clarification or add additional context in comments.

Comments

2

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.