Как из View передать в котроллер коллецию на пост запрос?

В C#, чтобы передать коллекцию из представления (View) в контроллер при выполнении POST-запроса, можно воспользоваться различными подходами. Рассмотрим несколько вариантов.

1. Использование модели представления:
Сначала необходимо создать модель представления, которая будет содержать коллекцию, которую вы хотите передать в контроллер. Например, если вы хотите передать список строк, вы можете создать модель следующим образом:

public class MyViewModel
{
    public List<string> MyCollection { get; set; }
}

Затем в представлении (View) вы можете использовать foreach-цикл или другой подход, чтобы создать элементы ввода для каждого элемента вашей коллекции:

@model MyViewModel

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post))
{
    for (int i = 0; i < Model.MyCollection.Count; i++)
    {
        @Html.HiddenFor(m => m.MyCollection[i])
    }

    <button type="submit">Отправить</button>
}

В данном примере, для каждого элемента в коллекции "MyCollection" создается скрытое поле (hidden field), что позволяет передать значение элемента из представления в контроллер.

В контроллере вы можете получить коллекцию следующим образом:

[HttpPost]
public ActionResult ActionName(MyViewModel model)
{
    List<string> myCollection = model.MyCollection;
    // Дальнейшая обработка коллекции
}

2. Использование аргументов формы:
В представлении вы также можете использовать конструкцию с прямым указанием аргумента формы, чтобы передать коллекцию в контроллер:

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post))
{
    for (int i = 0; i < Model.MyCollection.Count; i++)
    {
        <input type="hidden" name="MyCollection[@i]" value="@Model.MyCollection[i]" />
    }

    <button type="submit">Отправить</button>
}

В контроллере вы можете получить коллекцию следующим образом:

[HttpPost]
public ActionResult ActionName(List<string> myCollection)
{
    // Дальнейшая обработка коллекции
}

3. Использование AJAX:
Использование технологии AJAX также позволяет передавать коллекции из представления в контроллер. Вы можете отправить POST-запрос из представления, передавая данные в виде JSON-объекта.

$.ajax({
    url: '/ControllerName/ActionName',
    type: 'POST',
    dataType: 'json',
    data: { myCollection: JSON.stringify(Model.MyCollection) },
    success: function (result) {
        // Обработка ответа
    }
});

В контроллере вы можете получить коллекцию следующим образом:

[HttpPost]
public ActionResult ActionName(string[] myCollection)
{
    List<string> myCollectionList = myCollection.ToList();
    // Дальнейшая обработка коллекции
}

Это не полный список возможностей передачи коллекции из представления в контроллер, но они являются наиболее распространенными при использовании C#. Выбор конкретного подхода будет зависеть от требований вашего проекта и специфики задачи.