asp.net-mvc – 将asp.net服务器参数传递给Angular 2 app
================================================== ==============
编辑:解决方案升级到2.0 Final – Passing server parameters to ngModule after RC5 upgrade ================================================== ================ 有没有将服务器参数传递给Angular 2应用程序的方法? 即我想使用MVC对象“HttpContext.User.Identity.Name”并在我的angular 2应用程序中的任何位置注入它. 在角度1中,这可以使用ng“.constant”并将.Net对象序列化为index.cshtml中的JSON. 看起来有一种方法可以传递params,但这不适用于.Net代码. //HTML - Bootstrapping <script> System.import('app/main').then(null,console.error.bind(console)); //I WOULD LIKE TO PASS SOME PARAMS TO APP/MAIN HERE </script> 最终解决方案:(非常感谢蒂埃里) index.cshtml: <script> System.import('app/main').then( module => module.main( { name: '@User.Identity.Name',isAuthenticated: User.Identity.IsAuthenticated.ToString().ToLowerInvariant(),} ),console.error.bind(console) ); </script> main.ts: ... import {provide} from '@angular/core'; ... export function main(params) { bootstrap(AppComponent,[ provide('Name',{ useValue: params.name }),provide('IsAuthenticated',{ useValue: params.isAuthenticated }),ROUTER_PROVIDERS,HTTP_PROVIDERS,LoggerService,AuthenticationService ]); } 用法: import {Component,Injectable,Inject} from '@angular/core'; import {ROUTER_DIRECTIVES} from '@angular/router'; @Component({ selector: 'navbar',templateUrl: 'app/components/header/navbar.html',directives: [ROUTER_DIRECTIVES] }) export class SomeComponent { constructor(@Inject('Name') public username: string) { } } 解决方法
一个选项是在您导入的模块中添加方法.因此,您可以调用它来提供您想要的对象.
以下是app / main模块的示例: import {bootstrap} from '...'; import {provide} from '...'; import {AppComponent} from '...'; export function main(params) { let userIdentityName = params.name; // for example bootstrap(AppComponent,[ provide('userIdentityName',{ useValue: userIdentityName }) ]); } 然后你可以从HTML主页面导入它,如下所示: <script> System.import('app/main').then((module) => { module.main({ userIdentityName: 'something from asp.net' }); }); </script> 更新 使用最新版本的Angular,您需要以这种方式利用模块: export const USER_IDENTITY_NAME_TOKEN = new InjectionToken('userIdentityName'); @NgModule({ (...) providers: [ { provide: USER_IDENTITY_NAME_TOKEN,useValue: userIdentityName } ] }) export class MainModule() { } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 母版页(Master Pages)
- asp.net – 在代码中设置PageSize时,DataPager停止工作
- asp.net-mvc – 为什么在Razor中使用Html.RenderAction时会
- asp.net – 如何正确过滤数据表(datatable.select)
- asp.net-mvc – 如何使用我的Error.cshtml视图中的过滤器放
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automap
- asp.net – MVC2 – 逻辑应该去的基本问题
- Asp.Net Identity发现用户不在角色中
- asp.net – 对于单个页面,requestFiltering allowDoubleEsc
- [ASP.NET] 如果将缓存“滑动过期时间”设置为1秒会怎样?
- asp.net-mvc – asp.net mvc输入/模型验证多语言
- ASP.NET MVC6:以编程方式设置webroot
- asp.net-mvc – MVC应用程序中的随机数生成
- asp.net – DotNetOpenAuth.WebServerClient.XSR
- asp.net-mvc-3 – 如何根据Screen vs Handheld切
- asp.net – SQL Server 2008中的Bool类型
- asp.net – 如何使Visual Studio在从代码页面击中
- ASP.NET – 从不调用以编程方式创建的按钮的事件
- ASP.NET主页面和内容页面中的表单元素
- asp.net – 如何在MVC3中使用https生成绝对URL?