Отправьте раскрывающееся значение в бэкэнд, используя Angular и .Net Core - PullRequest
0 голосов
/ 24 июня 2018

Мой бэкэнд-класс выглядит так:

public partial class Book
{
    public Book()
    {
        BookAuthors = new HashSet<BookAuthor>();
    }

    public int BookId { get; set; }
    public string Title { get; set; }

    public ICollection<BookAuthor> BookAuthors { get; set; }
}

Между книгами и авторами У меня много-много связей, поэтому BookAuthor - это таблица соединений. Я пытаюсь отправить данные из angular в ядро ​​asp.net, и на странице создания книги я раскрываю список всех авторов. Моя проблема в том, что я не могу отправить автора, выбранного в раскрывающемся списке, что я хотел бы сделать, это также вставить данные в таблицу BookAuthor при создании книги, но у меня не может быть authorId.

В угловых у меня это:

 ngOnInit(): void {

this.operation = this.route.snapshot.params['operation'];

this.authorService.getAuthors()
  .subscribe((authors: IAuthor[]) => {
    this.authors = authors,
      authors.forEach((author) => {
        this.authorsDropdown.options.push({ key: author.authorId, value: author.authorName });
      });
  });

if (this.operation === 'create') {
  this.book = {
    bookId: 0, title: '', authors: [], authorsDropdown: this.authorsDropdown 
  };
  console.log(this.book);
} else {
  this.bookService.getBook(this.route.snapshot.params['id'])
    .subscribe((book: Book) => { this.book = book });
}
}

Я вижу выбранную опцию в авторах Dropdown, но как я могу отправить authorId в бэкэнд? В createBook в Angular у меня есть это:

createBook(book: Book) {
book.bookId = 0;
for (let a of book.authors) {
  a.authorId = Number(this.authorsDropdown.key);
  book.authors.push(a);
} 
this.errorMessage = null;
this.bookService.createBook(book).subscribe(
  b => this.router.navigate(['/authenticated/book-maint']),
  err => this.errorMessage = 'Error creating book'
);

}

А в C #:

public Book Create([FromBody] Book book)
{
  // validation
  if (book == null)
  {
    throw new AppException("Book not found");
  }

  _context.Book.Add(book);
  _context.SaveChanges();

  var bookAuthor = new BookAuthor();
  bookAuthor.BookId = book.BookId;
  bookAuthor.AuthorId = ??

  return book;
}

Надеюсь, мне удалось объяснить, что я хочу сделать. Спасибо!

...