Asp.net核心剃须刀页面[BindProperty]在集合上不起作用

F_I*_*I_L 3 data-binding collections asp.net-core-2.0 razor-pages

我试图[BindProperty]在asp.net核心剃须刀页面中使用批注以便绑定Ilist<T>我的一个模型类的集合,以便我可以一次编辑其中一些模型类,但是每次在OnPostAsync函数中它都不起作用,集合为空,并且我对数据及其默认值所做的更改都不会回发到服务器,但是当它的singel对象[BindProperty]正常工作并且值回发并可以更改时,我也尝试包装一个集合(即list<T>)在一个对象中,但无论哪种方法都没有用,所以有什么办法可以这样做,或者我应该说对那个集合中的每个对象发送编辑请求,然后一个一个地对其进行编辑(不能在剃须刀页面easilly和需要一些ajax电话)?

Tao*_*hou 8

对于和IList之间的绑定,您将需要使用bind属性。 RazorPagePageModelProduct[i].Name

这是完整的步骤。

  1. 模型

     public class Product
     {
        public int Id { get; set; }
        public string Name { get; set; }
     }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 页面模型

    public class IndexModel : PageModel
    {
        private readonly CoreRazor.Data.ApplicationDbContext _context;
    
        public IndexModel(CoreRazor.Data.ApplicationDbContext context)
        {
           _context = context;
        }
    
        [BindProperty] 
        public IList<Data.Product> Product { get; set; }
    
        public async Task OnGetAsync()
        {
            Product = await _context.Product.ToListAsync();
        }
    
        public async Task OnPostAsync()
        {
            var product = Product;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 视图

     public class Product
     {
        public int Id { get; set; }
        public string Name { get; set; }
     }
    
    Run Code Online (Sandbox Code Playgroud)