У меня есть 2 страницы, к которым можно получить доступ с помощью этих действий:
public class SearchEngineController : Controller
{
[Route("/search/{k}")]
public IActionResult Search(string k = "")
{
return View();
}
}
public class ChannelController : Controller
{
[Route("{name}")]
public IActionResult Index(string name = "")
{
return View();
}
}
Теперь, когда я что-то ищу с помощью ключа (somekey
), я хочу перенаправить на URL localhost:5000/search?k=somekey
Поскольку мы работаем с каналами (например, с каналами Youtube), поэтому нам необходимо классифицировать названия каналов, они должны быть уникальными. Например, канал с именем mobifone
может быть доступен через localhost:5000/mobifone
.
Все может выглядеть нормально, пока параметр name
(внутри действия Index
) не сможет классифицировать при вызове поискового запроса , Итак, каждый раз, когда я набираю localhost:5000/search?k=somekey
, он срабатывает на действие Index
.
Итак, мое временное решение выглядит так:
public class ChannelController : Controller
{
[Route("{name}")]
public IActionResult Index(string name = "")
{
if (name.ToLower() == "search")
{
// ~/Views/Shared/Search.cshtml
return View("Search");
}
return View();
}
}
Это может решить проблему, но .... мне это не нравится Потому что я не хочу вкладывать и оправдывать поисковый запрос внутри ChannelController
. Это не часть канала. Канал может содержать:
- Id
- Name
- DisplayName
- FounderId
- ...
В промежуточном программном обеспечении _channelManager
не должно иметь поискового члена, который может вернуть все в мире , например:
- Channel information
- List of channels
- User profile
- A post content
- List of posts
- ...
Есть ли способ лучше моего?