Как осуществить передачу List из одного контроллера в другой с использованием html-кнопки?

Как отправить список, сформированный в методе CalculateMenu() контроллера CalculationsController, в другой контроллер?
  • 14 сентября 2023 г. 5:26
Ответы на вопрос 3
Чтобы передать List из одного контроллера в другой с использованием HTML-кнопки, можно воспользоваться механизмом отправки формы.

1. Создайте HTML-форму на странице, содержащей кнопку для отправки списка:
```html
<form action="/OtherController/ReceiveMenu" method="post" id="menuForm">
    <input type="submit" value="Отправить меню" />
</form>
```

2. В контроллере CalculationsController создайте метод, который будет формировать список и возвращать представление с этим списком:
```csharp
public IActionResult CalculateMenu()
{
    List<string> menu = new List<string>
    {
        "Блюдо 1",
        "Блюдо 2",
        "Блюдо 3"
    };

    return View(menu);
}
```

3. В представлении, связанном с методом CalculateMenu(), отобразите список на странице:
```html
@model List<string>

<h2>Меню:</h2>
<ul>
    @foreach (var dish in Model)
    {
        <li>@dish</li>
    }
</ul>
```

4. В контроллере OtherController создайте метод, который будет принимать список, отправленный из CalculationsController:
```csharp
[HttpPost]
public IActionResult ReceiveMenu(List<string> menu)
{
    // Используйте список в соответствии с логикой вашего приложения
    // ...

    return View();
}
```

Теперь, когда пользователь нажмет на кнопку "Отправить меню", будет выполнена отправка формы на метод ReceiveMenu() контроллера OtherController, и список, формируемый в методе CalculateMenu() контроллера CalculationsController, будет передан в качестве аргумента методу ReceiveMenu(). Вы можете использовать полученный список в соответствии с нуждами вашего приложения.
 Вместо тупой конкатенации следует использовать интерполяцию строк, чтобы код был читаемее. К тому же, URL-строки требуют экранирования. Если нужно передать данные через запрос, они должны быть включены после символа "?". И, важно отметить, что если передаются данные через путь, то формат не JSON, а специфическая структура, предназначенная для сериализации данных. Если хочешь узнать больше, можешь посмотреть дополнительную информацию на сайте метанит.
Похожие вопросы