我们使用DNN,并且经常需要传递一些特定于上下文的值(如页面id或模块在页面id)到AngularJS应用程序中。我们已经制定了自己的惯例如何做到这一点,但希望听到别人如何处理这个问题以找到最佳做法。将服务器(c#/ Razor)值传递到AngularJS应用程序的最佳方法
所以基本上情况是服务器页面有JS需要的信息。使用WebAPI不是一种选择,因为这些值在页面中是已知的,但不是在单独的请求中。我见过的东西至今已:
- 使用的视图剃刀一样
href="@Tab.TabId/{{...}}"
(我不喜欢这个) - 地方像
ng-init="config = { prop1: '@Tab.TabId' }"
- 在NG-初始化值创建单独
<script>
标签,我们在哪里生成包含这些值的实时模块angular.module("config", []).constant('prop1', '@Tab.TabId')
- 在页面某处使用剃须刀创建json,并使用与#3相同的通用代码将其作为模块注入应用程序,只需更简洁的代码重用。
我已经看过所有这些,也使用了所有。目前我们避免#1,因为我们认为混合模板语言并不好,因为它不允许部分视图的外部化。所以基本上我们使用#2作为快速和简单(并且有点脏)+#3 /#4为更大的项目。
你有更好的方法,或者你更喜欢哪种方式?
这对描述的url编码问题没有任何影响 – iJungleBoy