Вы можете включить эти имена в качестве скрытых полей.Таким образом, их значения будут опубликованы в действии контроллера:
@for (var i = 0; i < Model.FieldList.Count(); i++)
{
@Html.HiddenFor(model => Model.FieldList[i].name)
...
}
Также вместо того, чтобы записывать эти циклы, я бы рекомендовал использовать шаблоны редактора:
@model SomeModel
@using (Html.BeginForm())
{
<div>
<fieldset>
<legend>Input Field List</legend>
@Html.EditorFor(x => x.FieldList)
<p>
<input type="submit" value="Generate PDF" />
</p>
</fieldset>
</div>
}
и соответствующий шаблон редактора~/Views/Shared/EditorTemplates/Field.cshtml
), который будет отображаться для каждого элемента коллекции FieldList
:
@model Field
@Html.HiddenFor(model => model.name)
<div class="editor-label">
@Html.LabelFor(model => model.value, Model.name)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.value)
</div>
Другая возможность вместо использования скрытых полей состояла бы в том, чтобы экспортировать эти имена в некоторое хранилище данных, а затем иметь хранилище, котороевернул бы их.Таким образом, в ваших двух действиях вы просто запросите имена в этом хранилище.Поскольку они не могут быть изменены, нет необходимости включать их в HTML.