ASP. net core 3.1 Список заполняется в onGet, но не в OnPost. Как правильно связать это? - PullRequest
0 голосов
/ 26 марта 2020

PostsList правильно заполняется в методе OnGet и правильно заполняет все oop в HTML. В методе OnPostDeletePost его значение равно нулю. Как правильно связать список, чтобы он заполнял всю модель ??

Модель:

public List<Post> PostsList { get; set; }

public async Task OnGet(string userId){

    PostsList = await _db.Posts.Include(p => p.ApplicationUser).Where(p => p.ApplicationUserId == userId).OrderByDescending(x => x.DateTime).ToListAsync();

}


public async Task<IActionResult> OnPostDeletePost(int? postId)
{
    if(postId == null)
    {
        return NotFound();
    }

    var postToDelete = PostsList.FirstOrDefault(p => p.Id == postId);
    if(postToDelete == null)
    {
        return NotFound();
    }
    _db.Posts.Remove(postToDelete);
    await _db.SaveChangesAsync();
    return RedirectToPage("Profile", new { userId = ApplicationUser.Id });
}

1 Ответ

0 голосов
/ 27 марта 2020

Каждый запрос - это новый экземпляр модели страницы. Вы можете сказать MVC связать список из значений формы;

[BindProperty]
public List<Post> PostsList { get; set; }

Но я предполагаю, что вы хотите перезагрузить базу данных? Обратите внимание, что вы можете загрузить только ту запись, которую хотите удалить;

var post = await _db.Posts.Where(p => p.Id == postId).SingleOrDefaultAsync()
...
_db.Posts.Remove(post);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...