我有一个关于将 Angular 7 应用程序的集合发送File到 .NET Core 3 服务器的问题。
File我有用于向服务器发送单个数据的功能代码。File但是当我尝试发送- ie:的集合时,我遇到了问题File[]。这是控制器的操作:
[HttpPost]
public async Task<IActionResult> Upload([FromForm(Name = "files")] List<IFormFile> files)
{
// implementation...
{
Run Code Online (Sandbox Code Playgroud)
我FormData按照用于将单个文件发送到服务器的代码发送:
const formData = new FormData();
formData.append('files', this.files);
Run Code Online (Sandbox Code Playgroud)
这会导致编译器出现错误(参见屏幕截图):
FormData 无法处理File[].
如果我要更改相同的代码来处理单个文件,例如通过选择集合中的第一个元素,文件将成功发送到服务器。就像这样:
const formData = new FormData();
formData.append('files', this.files[0]);
Run Code Online (Sandbox Code Playgroud)
请求的发送方式如下:
const httpOptions = {
headers: new HttpHeaders({ 'Content-Disposition' : 'multipart/form-data' }),
};
postPhotos(model: FormData): Observable<any | ErrorReportViewModel> {
return this.http.post('api/Photograph', model, httpOptions)
.pipe(
catchError(error => this.httpErrorHandlerService.handleHttpError(error))); …Run Code Online (Sandbox Code Playgroud) 我有一个涉及.NET Core的自引用关系ApplicationUser:
public class Network
{
public ApplicationUser ApplicationUser { get; set; }
public string ApplicationUserId { get; set; }
public ApplicationUser Follower { get; set; }
public string FollowerId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这样就可以在用户模型中保留“关注者”和“关注者”的列表:
public class ApplicationUser : IdentityUser
{
//...
public ICollection<Network> Following { get; set; }
public ICollection<Network> Followers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我使用Automapper将关注者和关注列表映射到视图模型。这是视图模型:
public class UserProfileViewModel
{
//...
public IEnumerable<FollowerViewModel> Followers { get; set; }
public IEnumerable<NetworkUserViewModel> Following { get; set; } …Run Code Online (Sandbox Code Playgroud) 我使用 Entity Framework Core 并采用代码优先的方法。当将更改保存到对其相关对象之一进行更改的实体时,我遇到了此错误:
“实体类型“Bird”上的属性“BirdId”是键的一部分,因此无法修改或标记为已修改。要使用标识外键更改现有实体的主体,请首先删除依赖项并调用“SaveChanges”,然后将受抚养人与新委托人联系起来。”
当我将更改保存到类型实体Observation并更新到相关Bird对象时,我遇到了错误。我已包含以下模型设置:
public class Observation
{
[Key]
public int ObservationId { get; set; }
// other properties...
public int BirdId { get; set; }
public Bird Bird { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Bird 类如下所示:
public class Bird
{
[Key]
public int BirdId { get; set; }
// other properties...
public ICollection<Observation> Observations { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我仅依赖 EF Core 模型约定(我没有在方法中添加代码OnModelCreating),该约定从 EF 迁移中设置数据库,如下所示:
migrationBuilder.CreateTable(
name: "Observation",
columns: table => …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Google 地图上定位浮动面板文本框。我想要下图中红色框中的文本框位置:
我可以让浮动面板出现在地图容器上方(请参见下面的代码)。
HTML:
<div class="container" id="floating-panel">
<input id="address" type="text" value="">
<input id="submit" type="button" value="Search">
</div>
<div id="map" class="class--map">
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.class--map {
width: 100%;
height: 400px;
background-color: grey;
}
Run Code Online (Sandbox Code Playgroud)
我尝试将浮动面板移动到地图容器中,如下所示:
<div id="map" class="class--map">
<div class="container" id="floating-panel">
<input id="address" type="text" value="">
<input id="submit" type="button" value="Search">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但这会将面板和文本框隐藏在地图后面。
如何最好地将地图上的面板/文本框放置在正确的位置?