Можно ли иметь два действия с разными наборами шаблонов отображения, которые оба работают в одном запросе? - PullRequest
0 голосов
/ 23 апреля 2019

У нас есть два действия, каждое из которых имеет свой собственный вид, и у каждого есть своя папка для шаблонов отображения:

  • / Контроллеры
    • Action1Controller.cs
    • Action2Controller.cs
  • / Просмотров
    • Action1
    • Index.cshtml
    • DisplayTemplates
      • Vehicle.cshtml
      • Car.cshtml
    • Мотор2
    • Index.cshtml
    • DisplayTemplates
      • Vehicle.cshtml
      • 2DoorCar.cshtml

Предположим, что иерархия наследования модели 2DoorCar : Car : Vehicle.

Мы используем Sitecore, который использует макет страницы на основе компонентов и приводит к выполнению нескольких действий в одном запросе. К сожалению, это вызывает странный сценарий, который я не могу понять, как решить.

* +1047 * Пример * +1048 *
  1. Загрузите Page1, на которой есть два компонента: Action1Component и Action2Component.
  2. MVC выполняет Action1Component и передает модель 2DoorCar в представление для визуализации.
  3. ASP.NET разрешает шаблон отображения /Views/Action1/DisplayTemplates/Car.cshtml, опираясь на базовые классы модели.

    За кулисами: ASP.NET MVC заполняет словарь "ActionCache" с именами базовых классов в качестве ключа и представлением в качестве значения. В результате шаблоны отображения Action1 кэшируются для будущих попаданий в кэш .

  4. MVC выполняет Action2Component и передает ту же модель 2DoorCar представлению для рендеринга.
  5. На этот раз ActionCache используется для поиска правильного шаблона отображения, и ASP.NET пытается отобразить страницу, используя шаблон отображения /Views/Action2/DisplayTemplates/Car.cshtml, который не существует (он должен был использовать 2DoorCar.cshtml, но не не знаю его искать).

Что я пробовал

  • Я пытался очистить кеш между каждым выполнением действия, но метод для извлечения кеша (или даже ключ кеша ) является внутренним.
  • Я попытался переименовать действия / контроллеры / представления, чтобы увидеть, кэшируются ли они какой-либо другой частью запроса, но это не так.

Кто-нибудь знает, как использовать несколько наборов шаблонов отображения в одном запросе или вообще отключить ActionCache для шаблонов отображения?

...