【发布时间】:2022-01-04 13:27:31
【问题描述】:
我的Ticket 模型中有一个User 模型,但每次我尝试在Ticket 模型中设置User 时,当我稍后尝试检索它时,它总是最终成为null打开,我似乎无法弄清楚为什么。
目标是能够创建Ticket,创建时您可以输入用户名以将此票证与某人相关联。如果找到用户,则创建票证。
但是,它似乎没有保存输入的关联User 或任何相关信息。
型号
public class Ticket
{
[Key]
public Guid Id { get; set; }
[Required]
public string Title { get; set; }
public User owningUser { get; set; }
}
public class User
{
public Guid UserId { get; set; }
[Required]
public string Username { get; set; }
public List<Ticket> assignedTickets { get; set; }
}
创建.razor
<InputText id="title" @bind-Value="@ticketItem.owningUser.Username" class="form-control" aria-label="Disabled input example" />
private Ticket ticketItem { get; set; } = new Ticket();
protected override async Task OnInitializedAsync()
{
ticketItem.owningUser = new User();
}
public async Task CreateNewTodoItem()
{
var result = await Http.PostAsJsonAsync("TodoItems", ticketItem);
}
控制器
public async Task <ActionResult> CreateNewTodoItem(Ticket item)
{
ApplicationUser userValid;
User tempUser = new User();
try
{
userValid = userManager.Users.Where(s => s.Email == item.owningUser.Username).First();
item.owningUser = new User();
item.owningUser.Username = userValid.Email;
context.Tickets.Add(item);
await context.SaveChangesAsync();
return NoContent();
} catch (InvalidOperationException)
{
return BadRequest();
}
}
检索方法
private User associatedUser { get; set; }
[Parameter]
public Guid Id { get; set; }
protected override async Task OnInitializedAsync()
{
ticketItem = await Http.GetFromJsonAsync<Ticket>($"TodoItems/{Id}");
associatedUser = await Http.GetFromJsonAsync<User>($"User/{Id}");
ticketItem.owningUser = associatedUser;
}
// Controller ---
[HttpGet("{ticketID}")]
public async Task<ActionResult<User>> GetUserForTicket(Guid ticketID)
{
var ticketUser = context.Tickets.First(p => p.Id == ticketID);
User use = new User { Username = ticketUser.owningUser.Username };
return Ok(use);
}
空错误
数据库上下文
public class ApplicationDbContext : ApiAuthorizationDbContext<ApplicationUser>
{
public ApplicationDbContext(
DbContextOptions options,
IOptions<OperationalStoreOptions> operationalStoreOptions) : base(options, operationalStoreOptions)
{
}
public DbSet<Company> Companies { get; set; }
public DbSet<Ticket> Tickets { get; set; }
public DbSet<Project> Projects { get; set; }
public DbSet<User> Users { get; set; }
}
【问题讨论】:
-
嗨@Krellex,你的
ApiAuthorizationDbContext是什么?请调试您的代码并检查 ticketUser 是否包含 owningUser 的值,同时在数据库中检查它。
标签: c# asp.net-core blazor blazor-webassembly asp.net-blazor