Someone please help me return this list properly from my view. I don\'t see why I\'m returning null for my fieldModelList I try to pass to the controller...
Here is
Phil Haack wrote an article some time ago explaining how to bind collections (ICollection) to view models. It goes into additional detail about creating an editor template, which you could certainly do as well.
Basically, you need to prefix the HTML elements' name attributes with an index.
Then, your controller could bind the collection of FieldModel
[HttpPost]
public ActionResult GetResponse(List fieldModelList)
{
return GetResponse(fieldModelList);
}
I'm not 100% sure the following would name the attributes correctly (I'd recommend using the editor template) but you could easily use the htmlAttributes argument and give it a name using the index.
@for(int i = 0;i < Model.Count;i++)
{
@Html.DisplayFor(m => m[i].PropertyName)
@Html.TextBoxFor(m => m[i].PropertyValue)
}
If you wanted to go as far as adding an editor template, add a partial view named FieldModel.ascx to /Views/Shared that is strongly typed to a FieldModel
@model Regions.SOA.UI.CopyBookSchemaCreator.Models.FieldModel
@Html.TextBoxFor(m => m.PropertyName) @* This might be a label? *@
@Html.TextBoxFor(m => m.PropertyValue)
And, then the part of your view responsible for rendering the collection would look like:
@for (int i = 0; i < Model.Count; i++) {
@Html.EditorFor(m => m[i]);
}