asp.net - 将常量值从 _layout.cshtml 传递给 Angular

标签 asp.net angular single-page-application

好的,所以我在 ASP.Net SPA 项目的 _Layout.cshtml 中有一个常量变量,我想传递它们以便 Angular 可以访问这些变量。

我该怎么做?

例如,这是我要传输的一个值。

var lenderValues = @Html.Action("GetLenderDropdownValues", "Dropdown");

这是我的第一个 app.component 启动的方式。

<my-rite-ui>Loading...</my-rite-ui>

我知道如何在 AngularJS 1.x 中只使用常量并在需要的地方注入(inject)该常量,但无法在 Angular 中解决。

任何帮助将不胜感激。

最佳答案

这取决于你到底想做什么,但我看到两种可能性:

  • 定义一个常量

导入主模块时需要传递这个常量。而不可能在 import 本身上执行此操作。您可以导入一个函数并使用参数调用它。

这是引导您的应用程序的主要模块的示例:

import {bootstrap} from '...';
import {provide} from '...';
import {AppComponent} from '...';

export function main(lenderValues) {
  bootstrap(AppComponent, [
    provide('lenderValues', { useValue: lenderValues })
  ]);
}

然后您可以像这样从您的 HTML 主页导入它:

<script>
  var lenderValues = @Html.Action("GetLenderDropdownValues", "Dropdown");
  System.import('app/main').then((module) => {
    module.main(lenderValues);
  });
</script>

你的 lenderValues 可以像组件一样注入(inject)所有元素:

@Component({
  (...)
})
export class SomeComponent {
  constructor(@Inject('lenderValues') lenderValues) {
  }
}
  • my-rite-ui 元素上定义一个参数

您可以在此级别指定参数,但无法对其进行评估。所以它有点乏味,因为您需要使用 JSON.stringify 将其序列化为字符串,从组件中相应的 ElementRef 获取元素并使用 反序列化它JSON.parse.

然后您可以将数据添加为提供者。

关于asp.net - 将常量值从 _layout.cshtml 传递给 Angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37312018/

相关文章:

asp.net - 禁用选中的复选框显示为未选中 - ASP.NET

asp.net - Nhibernate异常:"Unknown column ' **.**_id'在 'field list'“

c# - where 子句中的动态列名。 Entity Framework

Angular Compiler Error(好像是错误的实例)

javascript - 是否可以通过网络浏览器阻止 Windows 键?

asp.net - 使用 MVC2 的 AJAX 请求中的 CSRF 保护

Angular 2 : Accessing injected dependencies from decorator

html - 如何创建带虚线边框的圆形 svg 进度条

javascript - Vue.js 中的条件路由

javascript - IdentityServer3 和 Javascript 的隐式流程 - 如何处理 client_secret