2016-02-09 33 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

相关问题