MVC отображает шаблон Razor при нормальной загрузке страницы, но не тогда, когда Angular ngRoute получает его как templateUrl

Я использую некоторую стороннюю библиотеку, которая использует синтаксис razor для отображения gui ‘widget’, который используется клиентом. Похоже, что эта библиотека создает некоторые div и javascript, которые затем отправляются клиенту. Однако некоторые вопросы возникают при попытке интегрировать его с Angular. Если я создаю традиционный макет MVC, в котором вызов выполняется контроллеру, который затем отображает представление, он отображает нормально:

~/Views/MyEditor/MyPage.cshtml: (
@model ...
<div class="col-md-7">
   @Html.{3RDPARtY}.Editor()
   .Render()
</div>

Другие html-элементы на этой странице украшены тегами ng и предназначены для использования в качестве шаблона с Angular 1.x ng-маршрут.

в контроллере угловой маршрутизации…

$routeProvider.when('/MyEditor' {
    templateUrl: "~/Views/MyEditor/MyPage.cshtml"
    controller: "..."
}

В этом сценарии, когда угловая маршрутизация загружает этот маршрут, страница возвращается со всеми угловыми тегами нетронутыми и функционирует нормально как угловое приложение. Однако мы обнаруживаем, что третья сторона не загрузила и не визуализировала html и скрипты, которые она должна генерировать.

Если мы переместим @Html.3-я партия.Render () к основному индексу.cshtml, то есть тот, который по умолчанию без какой-либо угловой маршрутизации, затем визуализируется и функционирует нормально. Только когда угловой маршрутизатор делает запрос к этому файлу cshtml, он делает это дерьмо. Это там какой-то способ заставить его правильно визуализировать бритву, когда маршрутизатор делает вызов для файла?

Любая помощь была бы очень признательна. Спасибо!.

1 ответ

  1. Если я правильно прочитал ваш код выше и понял ваш вопрос:

    • вы используете Тильду ~в вашем пути в клиентском скрипте — Тильда ~только для razor(отрисовка на стороне сервера)

    • Кроме того, следует вызвать controllerдля представления, а не cshtmlнепосредственно файл.

    Если вы не путаете с web.configнастройками в приложении MVC, вы не можете вызывать (cs/vb) htmlфайлы напрямую (по умолчанию ограничено).

    • ограничение по умолчанию <add key="webpages:Enabled" value="false"/>
    • В Asp.Net WebPages(легкий Asp.Net сайт, который использует представления Razor), он включен ( true) , и вы можете вызвать их напрямую

    Hth.