【问题标题】:Access web.config appsettings from Angular js 2 Typescript [closed]从 Angular js 2 Typescript 访问 web.config appsettings [关闭]
【发布时间】:2016-11-08 14:35:39
【问题描述】:

我是 Angular js 2 类型脚本编程的新手。我正在尝试找到一种从打字稿访问 web.config 的应用程序设置键的方法。我不想在我的类型脚本中对数据进行硬编码,因为它们因环境而异。 TIA

【问题讨论】:

  • 使用 C# 读取并将其传递给您的 js。
  • 我创建了用于读取 web.config 值的 C# 类,但我不知道如何将这些值传递给我的打字稿文件。
  • 因为 TypeScript 被转译成 JavaScript,你将无法读取配置文件。您可以使用 Razor 语法在脚本标签中注入正确的值,也可以编写 Powershell 脚本来在构建期间替换这些值。 stackoverflow.com/questions/38000449/…

标签: c# asp.net-mvc-4 angular


【解决方案1】:

Typescript 被编译为 JavaScript,稍后在使用 web.config 文件的应用程序的上下文中执行。因此,您将无法在 TypeScript 级别读取配置。

您需要做的是让配置在运行时可用。换句话说,无论 TypeScript 生成什么代码,都需要在页面运行时知道一些可用的对象,这些对象将为它提供可能需要的任何配置。

有几种方法可以做到这一点。

您可以让您的 JS 代码知道应该始终存在于全局上下文中的对象(例如,当页面运行时,JS 中的 appConfig)。然后,您可以使用设置填充此对象。假设 Razor 的示例:

var appConfig = [];
appConfig.adminEmail = '@ConfigurationManager.AppSettings["adminEmail"]';

然后您的 TypeScript 代码可以在运行时依赖变量 appConfig。

或者,您可以为您的页面设计一种方法,将配置注入到您的 TypeScript 生成的代码中:

var adminEmail;

function SetAdminEmail(val: string) 
{
    adminEmail = val;
}

function DisplayAdminEmail() 
{
    alert(adminEmail);
}

然后在你的页面中:

<script type="text/javascript">
    SetAdminEmail('@ConfigurationManager.AppSettings["adminEmail"]');
    DisplayAdminEmail();
</script>

【讨论】:

  • 本示例将数据注入 main - plnkr.co/edit/ojaneZSSihUvkLmrpNkh?p=preview 。挑战在于读取 index.html 中的 appsettings 配置数据。我们只是在没有 mvc 的客户端上使用 angular2。对此的任何意见将不胜感激。
猜你喜欢
  • 1970-01-01
  • 2013-07-08
  • 2016-01-22
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 2012-01-06
相关资源
最近更新 更多