2016-02-09 30 views
1

我們使用DNN,並且經常需要傳遞一些特定於上下文的值(如頁面id或模塊在頁面id)到AngularJS應用程序中。我們已經制定了自己的慣例如何做到這一點,但希望聽到別人如何處理這個問題以找到最佳做法。將服務器(c#/ Razor)值傳遞到AngularJS應用程序的最佳方法

所以基本上情況是服務器頁面有JS需要的信息。使用WebAPI不是一種選擇,因爲這些值在頁面中是已知的,但不是在單獨的請求中。我見過的東西至今已:

  1. 使用的視圖剃刀一樣href="@Tab.TabId/{{...}}"(我不喜歡這個)
  2. 地方像ng-init="config = { prop1: '@Tab.TabId' }"
  3. 在NG-初始化值創建單獨<script>標籤,我們在哪裏生成包含這些值的實時模塊angular.module("config", []).constant('prop1', '@Tab.TabId')
  4. 在頁面某處使用剃鬚刀創建json,並使用與#3相同的通用代碼將其作爲模塊注入應用程序,只需更簡潔的代碼重用。

我已經看過所有這些,也使用了所有。目前我們避免#1,因爲我們認爲混合模板語言並不好,因爲它不允許部分視圖的外部化。所以基本上我們使用#2作爲快速和簡單(並且有點髒)+#3 /#4爲更大的項目。

你有更好的方法,或者你更喜歡哪種方式?

回答

0

我們使用變體#4。

這樣做的好處是JSON爲JS模塊所需的配置定義了確切的接口。而剃刀是很好的使用@Url.Action生成網址。

0

我們使用NewtonSoft並執行JSONConvert.SerializeObject(ObjectName),然後將其作爲Session從控制器傳遞,然後使用@Html.Raw(ObjectName)及其可在JavaScript中輕鬆使用的JSON對象。 。

+0

這對描述的url編碼問題沒有任何影響 – iJungleBoy

相關問題