c# - ASP.net core 3.1 List 填充在 onGet 但不在 OnPost 中。绑定它的正确方法是什么?
问题描述
在方法中正确PostsList
填充,OnGet
并且在 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 });
}
解决方案
每个请求都是页面模型的一个新实例。您可以告诉 MVC 从表单值绑定列表;
[BindProperty]
public List<Post> PostsList { get; set; }
但我假设您的意思是从数据库重新加载?请注意,您可以只加载要删除的记录;
var post = await _db.Posts.Where(p => p.Id == postId).SingleOrDefaultAsync()
...
_db.Posts.Remove(post);
推荐阅读
- node.js - 如何使用 NodeJS 在 inlinekeyboard 中动态添加一行和两个按钮?
- clojure - Clojure 奇怪的添加行为
- multithreading - pthread_exit 函数的属性:哪一个是正确的?
- python - 如何将python程序连接到GUI界面
- excel - 如何从 Laravel 中的 excel 导入中删除重复的行
- javascript - 如何扫描页面中的术语并显示它们 - Javascript - Chrome 扩展
- reactjs - 我在哪里可以找到 Slider Syncing(asNavFor) styleSheet (react-slick)
- python-3.x - 如何平均列组
- json - Nifi通过与属性比较来评估JsonPath
- java - 如何降低 Java 中这些循环的时间复杂度