Shaokan Shaokan - 3 months ago 28
C# Question

c# razor mvc textboxfor in foreach loop

how is it possible to retrieve data from

TextBoxFor
helper within a foreach loop? I mean:

in the view:

foreach(Language l in ViewBag.Languages){
<td>@l.lang</td>
<td>@Html.TextBoxFor(model => model.Name)
}


and how can I retrieve it in the controller once posted?

MyModel.Name //this returns the value of the first textbox within the foreach loop


By the way model.Name is defined in MyModel.cs as:

public string Name { get; set; }

Answer

You should be able to use the ModelBinder in your action by using:

public ActionResult MyAction(string[] name)
{
    foreach (var item in name)
    {
        // Process items
    }
}

Where name is the name automatically given to the text-boxes by Html.TextBoxFor().


Edit: If you wish to change the parameter name from name to something more descriptive, you can achieve this by using Html.TextBox, albeit with a loss of stong-typing:

@Html.TextBox("SomeMoreDescriptiveName", Model.Name);

And then in your controller action:

public ActionResult MyAction(string[] SomeMoreDescriptiveName)
{
    ...
}