我正在创建一个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) 我有一个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) 我试图了解z-index的工作原理.为了做到这一点,我创建了一个由五个div组成的简单示例.每个人都是前一个孩子,除了第一个孩子.我的目标是使第一个div(所有其他div的父容器)显示在所有其他div之上,有效地隐藏它们.
为了实现我的目标,我已经在所有div和父div上放置了z-index属性我放了一个夸大的值100以确保它高于所有其他但它似乎没有工作.
我已经阅读了许多关于z-index的不同文档,并在Stack Overflow上阅读了大量的答案.到目前为止,我尝试了以下内容:
尽管如此,我还没有成功地使父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)我试图实现一个通用存储库,现在我有这个:
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
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
我需要获得给定项目的类之间的某种依赖关系图,即该特定类使用的所有类。我想知道给定的类正在使用哪些类,以便以后可以在项目中找到它们的文件路径。考虑以下简单示例:
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使用了哪些类。所以我想以编程方式访问具有这些依赖项的对象。在这种情况下,该对象将包含IBark、Animal和Cat类/接口以及可能它们各自的文件路径。
这在 C# 中可能吗?我尝试研究 Roslyn API,虽然我可以解析文档并遍历它来查找节点,但我还没有找到一种方法来获取与这些节点相关的元数据,这些元数据可能会给我我正在寻找的内容(例如文件路径) 。这让我想知道是否有更好的方法来解决这个问题。
我已经使用 Visual Studio 中的模板和 Identity 预设(存储在应用程序中的用户帐户)创建了一个 .net core 2.1 MVC 应用程序,并且我正在尝试自动化一些审计字段。
基本上我想要做的是覆盖 SaveChangesAsync() 方法,以便每当对实体进行更改时,当前登录的用户 ID 都会设置为 CreatedBy 或 ModifiedBy 属性的审计属性,这些属性被创建为实体的影子属性.
我看过似乎有很多答案,但令人惊讶的是,没有一个对我有用。我曾尝试注入 IHttpContext、HttpContext、UserManager,但我似乎无法访问返回用户 ID 的方法,或者出现循环依赖错误,我不太明白为什么会发生这种情况。
我真的对这个感到绝望。我认为这样的事情应该很简单,但我真的很难弄清楚如何去做。似乎有针对 web api 控制器或 MVC 控制器的有据可查的解决方案,但不能在 ApplicationDbContext 中使用。
如果有人可以帮助我或至少为我指明正确的方向,我将不胜感激,谢谢。
我有一个角度应用程序,我试图阅读和解析一个.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;"时发生了异常.
我完全迷失了如何解决这个问题,我见过的例子没有任何帮助.我究竟做错了什么?
想象一下,我想向所有实体添加一个IsDeleted列或一些审核列。我可以创建一个基类,所有实体都将从该基类继承,这将解决我的问题,但是我无法指定创建列的顺序,因此我将以所有审计字段结束,然后才是实体字段,我不想要。我希望他们在桌子的尽头。
在实体框架的标准版本中,我们可以通过使用指定列顺序的注释来做到这一点。但是,目前对于EF核心还不存在这种情况。
我可以使用OnModelCreating()方法上的流利api来做到这一点,问题在于我只知道如何为我的每个实体单独进行操作,这意味着我必须为我拥有的每个实体编写相同的代码。
有什么办法可以为我所有的实体通用吗?某种for循环遍历我在dbcontext的DbSet中注册的所有实体?
我正在读取一个.csv文件,它返回一个字符串列表列表,recipiesList,格式如下:
列表(葡萄牙绿汤,葡萄牙),列表(烤沙丁鱼,葡萄牙),列表(盐渍鳕鱼配奶油,葡萄牙))
我有一个类食谱,它已按以下方式定义:
case class Recipe(name: String, country: String)
Run Code Online (Sandbox Code Playgroud)
有没有直接的方法可以将recipiesList转换为List [Recipe]类型的列表?比如用地图或某种提取器?
使用 .NET Core 3.1 框架,我尝试使用以下设置配置 Web 平台:
所有这三个组件(Razor Pages + Angular + Identity Server)都捆绑到一个 .NET Core Web 项目中。我还搭建了 Identity 框架,以便能够自定义页面的外观和行为。
我几乎能够按照我想要的方式配置应用程序,方法是基本上混合 Razor Pages 选项的启动模板代码(用户帐户存储在本地)和 Angular 模板选项(用户帐户存储在本地)以及一些尝试、错误和调查。
我的申请目前的状态是:
本地主机:5001/Dashboard(Angular SPA 主路由)
/Identity(仅用于带有身份的页面),则 cookie 似乎不再包含正确的信息,并且我在这些路由中没有会话。这意味着,例如,如果我使用SignInManager.IsSignedIn(User)仅显示受 保护的管理页面的导航选项options.Conventions.AuthorizePage($"/Administration"),如果我位于具有身份路由的 URL 中,则将显示导航选项卡,否则将显示不显示:本地主机:5001/身份/帐户/登录
localhost:5001(Razor Pages 应用程序主路由)
asp.net-identity openid-connect .net-core asp.net-core identityserver4
.net-core ×4
c# ×3
asp.net ×2
asp.net-core ×2
javascript ×2
angular ×1
angularjs ×1
collections ×1
cors ×1
css ×1
css-position ×1
file-upload ×1
html ×1
js-xlsx ×1
json ×1
list ×1
position ×1
post ×1
preflight ×1
roslyn ×1
rxjs ×1
scala ×1
typescript ×1
z-index ×1