TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Hududiy to‘plamlar Tematik to‘plamlar Платные каналы Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
  • Targ‘ibot
    Yandex Business orqali reklama TGStat Agency orqali kanallarda reklama TGStat.ru saytida reklama
async / noway — Будни разработчика

4 May, 18:06

Telegram'da ochish Ulashish Shikoyat qilish

Ну и давайте еще по теме контроллера подсвечу, какие есть нюансы при работе с моделями и контроллерами в нашем .NET.

Многие, наверное, знают про три ключевые вещи, которые делают из любого класса контроллер - это наследование от класса ControllerBase, имя класса, заканчивающееся на Controller, и использование атрибута [ApiController]

Но что, если я Вам скажу, что ни один из этих моментов не является обязательным. С именем все просто, при старте приложения фреймворк просто собирает все классы по соглашению с таким названием и пытается именно из них зарегистрировать контроллер. Собственно, вы можете любой класс явно указать, что его стоит рассмотреть как контроллер, повесив атрибут [Controller].

ControllerBase - использование этого класса встречается во всех книгах, гайдах и туториалах, да и в реальных приложениях тоже. Но, что интересно, он тоже не является обязательным. Да, он сильно упрощает жизнь за счет доступа к контексту и использованиие готовых реализаций IActionResult типа Ok(), NotFound(), BadRequest() и т.д. Но вы можете его и не наследовать, а просто добавить свойство в свой класс
[ControllerContext]
public ControllerContext Context { get; set; }

И все, вы можете снова использовать контекст в привычном виде
if (!Context.ModelState.IsValid)
{ return new BadRequestObjectResult(Context.ModelState); }


Тогда, наверное [ApiController] является обязательным? Нет, и он тоже не является обязательным. Также как и с прошлым примером, использование данного атрибута упрощает процесс, например за счет автоматической валидации модели. Если вы где-то видите внутри контроллера if (!ModelState.IsValid)
То там скорее всего как раз отказались от автоматической валидации (об этом планирую отдельно написать, если интересно будет) Ну и дополнительно это умный биндинг (долой [FromBody] или [FromQuery]), ну и кое что другое. В итоге, полноценный работающий контроллер может выглядеть так
[Controller]
[Route("api/hello")]
public class MySimpleHandler
{
[HttpGet]
public string SayHello() => "Hello, World!";
}
async / noway — Будни разработчика
Давненько ничего не писал про программирование, время исправиться. В нашем любимом .NET очень часто на собесах любят спрашивать про типы данных, про ссылочные и значимые, где большинство отвечает уже на автомате про хранение на стеке / кучи, передача значения или ссылки на значение, боксинг / анбокс...

149 0 1 5
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot