json - 寻找通过 razor @Html.Raw(Json.Encode(Model)) 将 json 数据从 asp.net mvc 4.5 传递到 angular 2 组件的解决方案

标签 json asp.net-mvc angular typescript asp.net-4.5

我正在尝试使用 Angular 2、TypeScript 和 ASP.NET MVC 4.5 在页面上显示数据行。我正在尝试将 JSON 传递到 Angular 2 组件中,但未能成功,并且浏览器未显示任何错误。

有谁知道如何从 .NET Controller 返回 JSON 数据,使用 (@Html.Raw(Json.Encode(Model)) 嵌入 View ,然后传递到要显示的 Angular 2 组件/模板?

这是我迄今为止尝试过的方法(基于 Plunkr 上的各种示例和 AngularJS 网站上的示例构建。我会注意到我有一个基本的 Angular 2 示例在同一解决方案中工作,所以我相信框架和工具设置正确。只是在应用它时遇到困难。我在最近的尝试中一直在引用这个 plunk:http://plnkr.co/edit/LEtEN9?p=preview

在我看来:

<my-app holdings="@Html.Raw(Json.Encode(Model))">Loading...</my-app>

main.ts:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './boot';
const platform = platformBrowserDynamic();
platform.bootstrapModule(AppModule);

boot.ts:

///<reference path="./../typings/globals/core-js/index.d.ts"/>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app';

@NgModule({
    imports: [BrowserModule],
    declarations: [AppComponent],
    bootstrap: [AppComponent]
})
export class AppModule { }

应用.ts:

import { Component, Input } from '@angular/core';
@Component({
    selector: 'my-app',
    template: `    
    <ul>
      <li *ngFor="let report of holdings">
        {{ report.CorpName }}
      </li>
    </ul>
  `
})
export class AppComponent {
    @Input() holdings: any;
}

感谢您的帮助!

最佳答案

使用评论中 yurzui 提供的链接以及此处 evanplaice 的“hack”功能:https://github.com/angular/angular/issues/6392 , 我整理了以下解决方案。

更改仅限于 app.ts。

应用.ts:

import { Component, Input, ElementRef } from '@angular/core';
@Component({
    selector: 'my-app',
    template: `   
    <ul>
      <li *ngFor="let report of hack(holdings)">
        {{ report.CorpName }}
      </li>
    </ul>
  `
})
export class AppComponent {

    hack(val) {
        console.log('Before:');
        console.log(val);
        val = JSON.parse(val);
        console.log('After:');
        console.log(val);
        return val;
    }

    @Input() holdings: any;

    constructor(elm: ElementRef) {
        this.holdings = elm.nativeElement.getAttribute('holdings');
    }
}

关于json - 寻找通过 razor @Html.Raw(Json.Encode(Model)) 将 json 数据从 asp.net mvc 4.5 传递到 angular 2 组件的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43078984/

相关文章:

java - 如何在java中获取没有字段名的jsonArray的值?

python - 查找单词的频率并绘制结果

asp.net-mvc - 使用 MvcContrib Grid 之类的东西是否会导致代码可读性倒退?

c# - MVC C# - 多个 AbstractValidator<T> 的 FluentValidation 复合验证器

javascript - Angular2 应用程序在单击事件时跳转到页面顶部

java - 我已允许 @CrossOrigin(origins ="*") 注释,但它仍然不起作用。谁能告诉我这里出了什么问题吗?

json - 如何使用搜索栏过滤json数据

javascript - 从 URL 解析 JSON

asp.net-mvc - AccessToken 不能超过 4K

javascript - 表达式插值 Javascript