如何在MVC控制器方法中读取web.config设置并在angularjs视图,控制器和服务中访问它们?

Jyi*_*ina 5 c# model-view-controller angularjs

我需要在MVC控制器方法中读取web.config appsettings并传递它们以查看和访问angularjs控制器和服务中的设置.我正在考虑循环使用appsettings并准备一个包含键/值对的字典,并将模型对象传递给我的视图.但是如何在角度应用程序中的任何位置访问它们?

Jon*_*son 3

我做这类事情的方式几乎就像你建议的那样(使用 JSON.net 和 Razor):

  1. 我使用我想要提供的数据准备字典或对象图。
  2. 将数据作为 ViewModel 的一部分从控制器传递到视图
  3. 序列化 ViewModel 数据,将其cshtml作为全局 JavaScript 变量注入到模板中。我必须使用以下技巧才能使其发挥作用:
<script> 
    var AppSettings = (function(o) {
        return o;
    })(@Html.Raw(JsonConvert.SerializeObject(Model.AppSettings)));
</script>
Run Code Online (Sandbox Code Playgroud)
  1. 创建一个读取(并复制)全局 JavaScript 变量的角度服务。
  2. 数据的客户端通过角度服务访问它。

该服务只是一个薄包装,尽管有时它包含逻辑和访问器方法。这里的值是您仅从代码中的一个位置访问全局变量(角度世界中的一种“肮脏”做法)。“把丑陋的东西封装起来!”

注意:这确实需要通过模板从 MVC 网站提供您的 Angular 应用程序cshtml

与进行 AJAX 调用相比,这种方法的优点是,当 Angular 应用程序启动时,感兴趣的数据就可用......可以通过服务同步访问数据。这简化了对数据的访问。如果异步可以,我建议从您的服务中进行 AJAX 调用,缓存结果并返回承诺。使用 AJAX 方法,角度模板和 MVC 项目之间没有耦合,允许您将角度模板作为纯 html 文件提供服务。