ASP.NET Core MVC: Создать сообщение, связанное с автором, ранее созданное в другом представлении - PullRequest
0 голосов
/ 11 марта 2019

Я занимаюсь разработкой демонстрационного приложения с использованием ASP.NET Core MVC + EF Core.

  1. У меня есть два класса моделей: Author и BlogPost;
  2. Отношения между нимиОдин (Автор) ко многим (BlogPost);
  3. Я хотел бы создать автора (используя представление "AuthorForm.cshtml"), а затем сразу же перенаправить его в представление BlogPost ("BlogPostForm.cshtml") используя ссылку на автора, созданную как ссылка на создаваемый блог-пост.Таким образом, мне не нужно будет выбирать автора для создания блога

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

«Но я еще не знаю идентификатор, потому что он генерируется EF. И я не знаю, как его передать».

author.Author = "AuthorName";

db.SaveChanges ();

int id = author.AuthorId;

затем передайте это:

RedirectToAction ("BlogPostView", "Controller", id);

0 голосов
/ 14 марта 2019

EF Core поможет заполнить значение столбца идентичности после функции SaveChangesAsync. Например:

Author.cs:

public class Author
{
    public int AuthorId { get; set; }
    public string AuthorName { get; set; }

    public List<BlogPost> BlogPosts { get; set; }
}

BlogPost.cs:

public class BlogPost
{
    public int BlogPostId { get; set; }
    public string BlogPostName { get; set; }


    public int AuthorId { get; set; }
    public Author Author { get; set; }
}

При создании автора действие EF Core поможет заполнить AuthorId после сохранения:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("AuthorId,AuthorName")] Author author)
{
    if (ModelState.IsValid)
    {
        _context.Add(author);
        await _context.SaveChangesAsync();

        //here you will get id
        var id = author.AuthorId;

        //redirect to another action with parameter 
        return RedirectToAction(nameof(Index),new { id=id});
    }
    return View(author);
}

Затем вы будете перенаправлены на другое действие / представление с параметром, как показано в коде выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...