Применяем кортеж для передачи параметров в контроллер net core MVC.

  • Михаил
  • 15 мин. на прочтение
  • 213
  • 16 Apr 2023
  • 16 Apr 2023

Кортеж — это тип данных C# (появился в C# 7.0), который предоставляет краткий синтаксис для группирования нескольких элементов данных в упрощенную структуру. Кортежи позволяют сгруппировать и предоставить пользователю данные различных типов. Сегодня поговорим о том, как можно использовать кортежи в своих приложениях C#.  Массивы комбинируют объекты одного типа, а кортежи (tuple) могут комбинировать объекты различных типов. Понятие кортежей происходит из языков функционального программирования, таких как F#, где они часто используются. С появлением .NET 4 кортежи стали доступны в .NET Framework для всех языков .NET. В .NET 4 определены восемь обобщенных классов Tuple и один статический класс Tuple, который служит фабрикой кортежей. Существуют различные обобщенные классы Tuple для поддержки различного количества элементов; например, Tuple содержит один элемент, Tuple — два элемента и т.д. Элементы кортежа могут быть доступны через свойства Item1, Item2 ...

Существуют различные способы передачи данных из контроллера в представление:

  • ViewData
  • ViewBag
  • Модель представления

Модель представления является во многих случаях более предпочтительным способом для передачи данных в представление. Для передачи данных в представление используется одна из версий метода View. На просторах интернета чаще всего встречаются классические типы данных. Для передачи сложных типов рекомендуют использовать структуры и кассы. Но не всегда удобно для передачи дополнительного параметра создавать отдельный класс. Вот и возник вопрос, почему не использовать кортежи.  

Создаем новый проект MVC.

В home контроллере изменяем.

public IActionResult Index()
{
     return View("Index", Tuple.Create(Guid.NewGuid(), "Михаил", true, false));
} 

В представлении index добавляем.

@model Tuple<Guid, string, bool, bool>

<div class="text-center">
   <h1 class="display-4">Welcome @Model.Item2</h1>
   @if (Model.Item3)
   {
       <h2>@Model.Item1</h2>
   }
   <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

Проверяем.

Заметим, что параметрами кортежа могут быть любые типы данных, в том числе и списки, перечисления, классы, структуры и т.д..