![](/img/trans.png)
[英]Model persistence in MVC3 - Models being set to null & not being saved,
[英]Associated Model class not being saved keeps returning null
I have a User
model inside my Ticket
model but every time I try and set the User
inside the Ticket
model, it always just ends up being null
when I try and retrieve it later on and I cannot seem to figure out why.
目標是能夠創建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; }
}
<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; }
}
你必須包括 owningUser
var ticketUser = context.Tickets.Include(o=> o.owningUser).First(p => p.Id == ticketID);
if(ticketUser.owningUser!=null)
return new User { Username = ticketUser.owningUser.Username };
return BadRequest("no owningUser");
但可能是 owningUser 是 null 或者您的 dbcontext 配置不正確,因為我可以看到您的 Create 操作根本沒有任何意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.