小编Joã*_*iva的帖子

如何使用TypeScript在Angular 2中正确地将对象转换为JSON

我正在创建一个Angular 2简单的CRUD应用程序,它允许我使用CRUD产品.我正在尝试实现post方法,因此我可以创建一个产品.我的后端是一个ASP.NET Web API.我遇到了一些麻烦,因为在将我的Product对象转换为JSON时,它没有正确执行.预期的JSON应该是这样的:

{
  "ID": 1,
  "Name": "Laptop",
  "Price": 2000
}
Run Code Online (Sandbox Code Playgroud)

但是,从我的应用程序发送的JSON是这样的:

{  
   "product":{  
      "Name":"Laptop",
      "Price":2000
   }
}
Run Code Online (Sandbox Code Playgroud)

为什么在JSON的开头添加"产品"?我该怎么做才能解决这个问题?我的代码:

product.ts

export class Product {

    constructor(
        public ID: number,
        public Name: string,
        public Price: number
    ) { }   
}
Run Code Online (Sandbox Code Playgroud)

product.service.ts

import {Injectable}   from '@angular/core';
import {Http, Response} from '@angular/http';
import { Headers, RequestOptions } from '@angular/http';
import {Observable} from 'rxjs/Observable';

import {Product} from './product';

@Injectable()
export class ProductService {

    private productsUrl = 'http://localhost:58875/api/products';

    constructor(private http: Http) { }

    getProducts(): Observable<Product[]> …
Run Code Online (Sandbox Code Playgroud)

post json typescript angular

47
推荐指数
4
解决办法
18万
查看次数

如何在使用具有多个源的PUT和DELETE请求时解决ASP.NET Web API CORS预检问题?

我有一个ASP.NET Web API,由三个不同的SPA调用.我正在为Web API使用Windows身份验证.我最初尝试在Web.config中配置CORS,如下所示:

<httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" value="http://localhost:63342" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
        <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
        <add name="Access-Control-Allow-Credentials" value="true" />
    </customHeaders>
</httpProtocol>
Run Code Online (Sandbox Code Playgroud)

这导致了这个预检问题:

Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin (...) is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)

我通过在Global.asax.cs中添加以下方法解决了:

protected void Application_BeginRequest()
{
    if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
    {
        Response.Flush();
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方法适用于单一SPA.我以为我可以去Web.config并添加其他类似的来源:

<add name="Access-Control-Allow-Origin" value="http://localhost:63342,http://localhost:63347,http://localhost:63345/>
Run Code Online (Sandbox Code Playgroud)

但显然这是不允许的.这产生了以下错误:

The 'Access-Control-Allow-Origin' header contains …
Run Code Online (Sandbox Code Playgroud)

asp.net cors http-options-method asp.net-web-api preflight

11
推荐指数
1
解决办法
9968
查看次数

为什么z-index不起作用?

我试图了解z-index的工作原理.为了做到这一点,我创建了一个由五个div组成的简单示例.每个人都是前一个孩子,除了第一个孩子.我的目标是使第一个div(所有其他div的父容器)显示在所有其他div之上,有效地隐藏它们.

为了实现我的目标,我已经在所有div和父div上放置了z-index属性我放了一个夸大的值100以确保它高于所有其他但它似乎没有工作.

我已经阅读了许多关于z-index的不同文档,并在Stack Overflow上阅读了大量的答案.到目前为止,我尝试了以下内容:

  • 将位置属性添加到所有div.
  • 向我要隐藏的div添加值为0.99的不透明度.
  • 应用位置属性的不同值组合(例如,相对,固定,绝对).

尽管如此,我还没有成功地使父div出现在所有其他div之上.我究竟做错了什么?

我用我刚才描述的例子创建了一个JSFiddle:https://jsfiddle.net/y8jfdz7w/15/ .

.first {
  position: absolute;
  z-index: 100;
  width: 500px;
  height: 500px;
  background-color: grey;
}
.second {
  position: absolute;
  z-index: 2;
  width: 450px;
  height: 450px;
  top: 25px;
  left: 25px;
  background-color: orange;
  opacity: 0.99;
}
.third {
  position: absolute;
  z-index: 3;
  width: 400px;
  height: 400px;
  top: 25px;
  left: 25px;
  background-color: yellow;
  opacity: 0.99;
}
.fourth {
  position: absolute;
  z-index: 20;
  width: 350px;
  height: 350px;
  top: 25px;
  left: 25px;
  background-color: green;
  opacity: …
Run Code Online (Sandbox Code Playgroud)

css position z-index css-position

10
推荐指数
1
解决办法
1621
查看次数

通用存储库,CreateObjectSet&lt;T&gt;() 方法

我试图实现一个通用存储库,现在我有这个:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.Entity.Core.Objects;
using Web_API.Models;

namespace Web_API.DAL
{
    class GenericRepository<T> : IRepository<T> where T : class
    {
        private ApplicationDbContext entities = null;
        IObjectSet<T> _objectSet;

        public GenericRepository(ApplicationDbContext _entities)
        {
            entities = _entities;
            _objectSet = entities.CreateObjectSet<T>();
        }

        ...
Run Code Online (Sandbox Code Playgroud)

我在调用此方法时遇到问题: entities.CreateObjectSet<T>(); 应该没问题,但是我收到此错误:

在此处输入图片说明

我已经将 System.Data.Entity 添加到我的项目中,此时我不知道还能做什么。我正在关注本教程http://www.codeproject.com/Articles/770156/Understanding-Repository-and-Unit-of-Work-Pattern。有谁知道如何解决这个问题?

c# asp.net entity-framework repository-pattern asp.net-web-api

5
推荐指数
1
解决办法
790
查看次数

如果仅使用一个运算符,是否应该使用管道运算符?

RxJs 5.5版引入了管道运算符,以使其更易于组合RxJs运算符,并使这些情况下的树震动更有效。我的问题是,如果只打算使用一个运算符,应该使用管道运算符吗?

考虑以下示例:

someObservable.map(mappingLogicMethod).subscribe(x => console.log(x));
Run Code Online (Sandbox Code Playgroud)

someObservable.pipe(map(mappingLogicMethod)).subscribe(x => console.log(x));
Run Code Online (Sandbox Code Playgroud)

在仅使用一个操作员的情况下,最合适的方法是什么?

javascript reactive-programming rxjs rxjs-pipeable-operators

5
推荐指数
1
解决办法
94
查看次数

如何以编程方式获取类依赖项及其各自的文件位置?

我需要获得给定项目的类之间的某种依赖关系图,即该特定类使用的所有类。我想知道给定的类正在使用哪些类,以便以后可以在项目中找到它们的文件路径。考虑以下简单示例:

public class Dog: Animal, IBark
{
    public void Bark()
    {
        // Code to bark.
    }

    public void Fight(Cat cat)
    {
        // Code to fight cat.
    }
}
Run Code Online (Sandbox Code Playgroud)

对于这个具体的例子,我想知道该类Dog使用了哪些类。所以我想以编程方式访问具有这些依赖项的对象。在这种情况下,该对象将包含IBarkAnimalCat类/接口以及可能它们各自的文件路径。

这在 C# 中可能吗?我尝试研究 Roslyn API,虽然我可以解析文档并遍历它来查找节点,但我还没有找到一种方法来获取与这些节点相关的元数据,这些元数据可能会给我我正在寻找的内容(例如文件路径) 。这让我想知道是否有更好的方法来解决这个问题。

c# roslyn .net-core roslyn-code-analysis

5
推荐指数
1
解决办法
1667
查看次数

如何使用 Identity 在 ApplicationDbContext 中获取当前登录的用户 ID?

我已经使用 Visual Studio 中的模板和 Identity 预设(存储在应用程序中的用户帐户)创建了一个 .net core 2.1 MVC 应用程序,并且我正在尝试自动化一些审计字段。

基本上我想要做的是覆盖 SaveChangesAsync() 方法,以便每当对实体进行更改时,当前登录的用户 ID 都会设置为 CreatedBy 或 ModifiedBy 属性的审计属性,这些属性被创建为实体的影子属性.

我看过似乎有很多答案,但令人惊讶的是,没有一个对我有用。我曾尝试注入 IHttpContext、HttpContext、UserManager,但我似乎无法访问返回用户 ID 的方法,或者出现循环依赖错误,我不太明白为什么会发生这种情况。

我真的对这个感到绝望。我认为这样的事情应该很简单,但我真的很难弄清楚如何去做。似乎有针对 web api 控制器或 MVC 控制器的有据可查的解决方案,但不能在 ApplicationDbContext 中使用。

如果有人可以帮助我或至少为我指明正确的方向,我将不胜感激,谢谢。

asp.net-identity .net-core asp.net-core asp.net-core-2.0

4
推荐指数
2
解决办法
2468
查看次数

如何使用js-xlsx从HTML输入中读取文件?

我有一个角度应用程序,我试图阅读和解析一个.xlsx文件诉诸js-xlsx JavaScript库.但是我在JavaScript端打开文件时遇到问题.

在我的html上,我有一个简单的类型文件输入,它打开一个文件选择器,用户可以在其中选择一个合适的文件.我无法使用angular指令将文件发送到控制器上的函数,因为当用户仅在按下输入按钮时选择文件时,ng-change不会更新.我最终不得不通过添加'onchange ="angular.element(this).scope().handleFile(this)"'到我的输入来使用普通旧JavaScript和一些角度的混合.

附加quotation.html:

<div class="container-fluid" ng-controller="addQuotationController">
...  
<input type="file" id="file" class="" onchange="angular.element(this).scope().handleFile(this)">
...
</div>
Run Code Online (Sandbox Code Playgroud)

这解决了我无法将文件从HTML发送到JavaScript方面的问题.但是,我无法打开文件.我从官方文档中尝试了很多例子,但是我还没有成功地使它成功.这是我目前的代码:

附加quotation.component.js:

$scope.handleFile = function(e) {
    var files = e.target.files;
    var i,f;
    for (i = 0, f = files[i]; i != files.length; ++i) {
        var reader = new FileReader();
        var name = f.name;
        reader.onload = function(e) {
            var data = e.target.result;

            var workbook = XLSX.read(data, {type: 'binary'});

            /* DO SOMETHING WITH workbook HERE */
        };
        reader.readAsBinaryString(f);
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图调试并发现该文件确实进入了该方法但是在尝试访问"e.target.files;"时发生了异常.

进入这个功能

试图访问e.target.files

我完全迷失了如何解决这个问题,我见过的例子没有任何帮助.我究竟做错了什么?

html javascript file-upload angularjs js-xlsx

2
推荐指数
1
解决办法
2220
查看次数

如何将同一列添加到EF Core中的所有实体?

想象一下,我想向所有实体添加一个IsDeleted列或一些审核列。我可以创建一个基类,所有实体都将从该基类继承,这将解决我的问题,但是我无法指定创建列的顺序,因此我将以所有审计字段结束,然后才是实体字段,我不想要。我希望他们在桌子的尽头。

在实体框架的标准版本中,我们可以通过使用指定列顺序的注释来做到这一点。但是,目前对于EF核心还不存在这种情况。

我可以使用OnModelCreating()方法上的流利api来做到这一点,问题在于我只知道如何为我的每个实体单独进行操作,这意味着我必须为我拥有的每个实体编写相同的代码。

有什么办法可以为我所有的实体通用吗?某种for循环遍历我在dbcontext的DbSet中注册的所有实体?

c# entity-framework entity-framework-core .net-core

1
推荐指数
1
解决办法
1278
查看次数

如何将字符串列表的列表转换为Scala中的对象列表?

我正在读取一个.csv文件,它返回一个字符串列表列表,recipiesList,格式如下:

列表(葡萄牙绿汤,葡萄牙),列表(烤沙丁鱼,葡萄牙),列表(盐渍鳕鱼配奶油,葡萄牙))

我有一个类食谱,它已按以下方式定义:

case class Recipe(name: String, country: String)
Run Code Online (Sandbox Code Playgroud)

有没有直接的方法可以将recipiesList转换为List [Recipe]类型的列表?比如用地图或某种提取器?

collections scala list

0
推荐指数
1
解决办法
62
查看次数

使用 .AddIdentityServerJwt() 时,.NET Core Razor Pages 应用程序的身份验证不适用于没有“/Identity”路由的视图

使用 .NET Core 3.1 框架,我尝试使用以下设置配置 Web 平台:

  • Razor Pages 应用程序,充当平台的登陆页面,具有平台广告、cookie 同意、隐私政策、联系人以及身份附带的页面(例如登录、注册、管理帐户)等功能/页面。
  • Razor Pages 应用程序的身份验证以标准身份方式执行。
  • Angular SPA,只有在用户登录后才能访问。
  • 使用 Identity Server 进行 OIDC 配置,以便向 Angular SPA 添加身份验证和授权。

所有这三个组件(Razor Pages + Angular + Identity Server)都捆绑到一个 .NET Core Web 项目中。我还搭建了 Identity 框架,以便能够自定义页面的外观和行为。

我几乎能够按照我想要的方式配置应用程序,方法是基本上混合 Razor Pages 选项的启动模板代码(用户帐户存储在本地)和 Angular 模板选项(用户帐户存储在本地)以及一些尝试、错误和调查。

我的申请目前的状态是:

  1. 用户登录 Razor Pages 应用程序。
  2. 登录成功,导航栏显示邮件。
  3. 当我们导航到 SPA 时,我的 Angular 应用程序尝试静默登录并成功:

本地主机:5001/Dashboard(Angular SPA 主路由)

在此输入图像描述

  1. 如果我们导航到 Razor Pages 应用程序中没有路由的部分/Identity(仅用于带有身份的页面),则 cookie 似乎不再包含正确的信息,并且我在这些路由中没有会话。这意味着,例如,如果我使用SignInManager.IsSignedIn(User)仅显示受 保护的管理页面的导航选项options.Conventions.AuthorizePage($"/Administration"),如果我位于具有身份路由的 URL 中,则将显示导航选项卡,否则将显示不显示:

本地主机:5001/身份/帐户/登录

在此输入图像描述

localhost:5001(Razor Pages 应用程序主路由)

在此输入图像描述

  1. 但是,即使当我位于具有路由的 URL …

asp.net-identity openid-connect .net-core asp.net-core identityserver4

0
推荐指数
1
解决办法
691
查看次数