В ASP.NET MVC я создаю сайт с требованием, чтобы главное меню (появляющееся на каждой странице) удаляло гиперссылку для записи (оставляя только текст), если текущая страница является той, на которую ссылается.
Меню html определено на главной странице сайта, но в настоящее время заполняется данными ViewData, переданными контроллером. Это настроено так, что базовый контроллер определяет словарь объектов ссылок, затем действия на контроллерах извлекают соответствующую запись из словаря, устанавливают адрес пустым. Базовый контроллер затем передает его в виде IEnumerable<>
.
Однако, если взглянуть на него критическим взглядом, то больше похоже на то, за что вид должен нести единоличную ответственность: меню не меняется, поэтому контроллер чувствует, что он встает на месте, где не должен. Моя единственная небольшая оговорка в том, что представление будет знать о текущей странице, что больше похоже на беспокойство контроллера.
Я уже некоторое время спорю кругами в своей голове, поэтому я хотел бы получить другие мнения по этому поводу. Я бы подумал, что это будет довольно распространенный сценарий?
(Последнее разъяснение моей проблемы: ссылки в главном меню относятся к «целевым страницам» различных областей сайта (в основном, к действию «Индекс» всех контроллеров), и как только вы перейдете в эту область и с целевой страницы, все записи в меню будут связаны)