2016-02-09 3 views
1

Мы используем DNN и часто должны передавать несколько контекстных значений (например, идентификатор страницы или модуль на странице) в приложение AngularJS. Мы разработали наши собственные соглашения, как это сделать, но хотели бы услышать от других, как они подходят к этому, чтобы найти лучшую практику.Лучший способ передать значения сервера (C#/Razor) в приложение AngularJS

Так что в основном ситуация заключается в том, что на серверной странице есть информация, необходимая JS. Использование WebAPI не является вариантом, так как эти значения известны на странице, но не в отдельном запросе. Вещи, которые я видел до сих пор были:

  1. Использование в поле зрения, как бритва, как href="@Tab.TabId/{{...}}" (я не люблю это)
  2. Поместите значения в нг-INIT как ng-init="config = { prop1: '@Tab.TabId' }"
  3. Создать отдельный тег <script>, где мы создаем модуль «на лету», содержащий эти значения, поэтому angular.module("config", []).constant('prop1', '@Tab.TabId')
  4. Создайте json с бритвой на странице где-нибудь и внедрите все это как модуль в приложение, используя общий код, который делает то же, что и # 3 , только с более чистым повторным использованием кода.

Я видел все эти и использовал все. В настоящее время мы избегаем # 1, поскольку считаем неправильным смешивать языки шаблонов и потому, что они не позволяют экстернализировать части представления. Поэтому в основном мы используем # 2 как для быстрого и простого (и немного грязного) + # 3/# 4 для больших проектов.

У вас есть лучший способ, или в каком направлении вы бы предпочли?

ответ

0

Мы используем вариант №4.

Это имеет то преимущество, что JSON определяет точный интерфейс для конфигурации, необходимой модулю JS. И Razor отлично подходит для создания URL-адресов, используя @Url.Action.

0

Мы используем NewtonSoft и делаем JSONConvert.SerializeObject (ObjectName), а затем передаем его как сеанс с контроллера, а затем используем @ Html.Raw (ObjectName) и его объект JSON, который можно легко использовать в javascript. .

+0

Это не влияет на описанные проблемы кодирования URL-адреса – iJungleBoy

Смежные вопросы