【发布时间】:2020-03-26 23:07:01
【问题描述】:
在我的项目中,我将 .net Core 2.2 和 Angular 8 用于 UI。 我想根据它们的 id 实现复杂对象的下拉列表。 当我转到下拉列表时,我想根据他们的 ID 显示前:ProjectName。
我的 VirtualMachine 类看起来像:
public class VirtualMachine
{
public int Id { get; set; }
public string Name { get; set; }
public string IpAddress { get; set; }
public int DiskSize { get; set; }
public short CPU { get; set; }
public int Ram { get; set; }
public string ImageUrl { get; set; }
public VMRole Role { get; set; }
public VMStatus Status { get; set; }
public int HypervisorId { get; set; }
public Hypervisor Hypervisor { get; set; }
public int ProjectId { get; set; }
public Project Project { get; set; }
public int ManagementId { get; set; }
public Management Management { get; set; }
}
我的控制器 POST 操作如下所示:
[HttpPost("create")]
public async Task<IActionResult> CreateVm(VirtualMachine vm)
{
if (await _repo.VmExists(vm.Name))
return BadRequest("VM name already exists");
vm.Hypervisor = _context.Hypervisors.SingleOrDefault(x => x.HypervisorId ==
vm.HypervisorId);
vm.Project = _context.Projects.SingleOrDefault(x => x.Id == vm.ProjectId);
vm.Management = _context.Managements.SingleOrDefault(x => x.Id == vm.ManagementId);
try
{
await _context.VirtualMachines.AddAsync(vm);
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
return BadRequest();
}
return Ok();
}
邮递员 POST 正文:
{
"name":"Abstergo",
"ipAddress":"192.168.0.1",
"diskSize":25,
"cpu":16,
"ram":100,
"imageUrl":"www.google.com",
"role":1,
"status":0,
"hypervisorId":1,
"projectId":11,
"managementId":8
}
Angular 打字稿类:
export class VirtualMachine {
name: string;
ipAddress: string;
diskSize: number;
cpu: number;
ram: number;
imageUrl: string;
role: string;
status: string;
projectId: number;
hypervisorId: number;
managementId: number;
projectName: Project;
managementName: Management;
hypervisorName: Hypervisor;
}
html代码
<div>
<select name="select" [(ngModel)]="model.hypervisorId">
<option style="display:none"></option>
<option *ngFor="let data of model.Hypervisor" [ngValue]="data.hyperisorId"> {{data.model.hypervisorName}} </option>
</select>
</div>
【问题讨论】:
-
可以在这里发布您在角度尝试过的代码
-
-
澄清一下,要不要按ID确定顺序?还是您希望 ID 作为文本的一部分显示在选择列表中?
-
如果要按ID对选择列表进行排序,请在检索到数据后对其进行排序。例如:假设 ID 是数字,您可以使用: items.sort((a, b) => { return a.id - b.id; });
-
我想根据他们的 id 显示名字。例如:根据 projectId 的 projectName。我从 postgre 获得的这些数据。这3张表与VirtualMachine有关系。
标签: javascript c# angular typescript asp.net-core