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?
