Мне было интересно, может ли кто-нибудь здесь пролить свет на некоторые вопросы, которые у меня возникали в последнее время о Бритве.
1) Я хотел разделить определение раздела на несколько частей? Зачем? Потому что я хотел.
К сожалению, использование @section "sectionname" дважды вызывало исключение.
Глядя вглубь источника Razor, я увидел, что Razor проверил, был ли раздел уже определен, и выдал исключение, если он уже был определен.
Поскольку Razor использует делегаты для визуализации разделов, я изменил код на использование Delegate.Combine (если раздел был определен ранее), и это сработало, теперь я смог создать раздел, который был объявлен дважды (или более) ,
2) Когда раздел определен в виде, но не отображается на странице макета, создается исключение. Я не видел элегантного решения, чтобы преодолеть это. Если я хочу использовать страницу просмотра с несколькими страницами макета ... Это своего рода проблема.
Глядя на источник (опять же), есть просто foreach, который проверяет, был ли отрисован каждый раздел, определенный в представлении, и затем выдает исключение, если раздел не был отрисован.
Я подумал о некоторых решениях (особенно в отношении моего второго вопроса, наследования от базового класса представления и раскрытия не визуализированных разделов на странице макета и выполнения некоторой обработки), но они кажутся ... как хаки. Есть ли лучшие решения, чем изменение источника?
Не очень важно, но если у кого-то есть понимание конструктивных решений, которые привели Razor к такому решению, я также был бы признателен, так как это кажется очень ограничительным дизайном.
обновление
@ davidferguson и @takepara, вы ошиблись. Моя проблема не в определении раздела в макете и не в его определении в представлении, а в наоборот . Определение его в представлении, но не определение его в макете.