Asp.net core 等待上下文中出现错误:“等待”;无法通过表达式引用类型";
基于 我对我的.cs进行了如下编辑:Asp.net core 等待上下文中出现错误:“等待”;无法通过表达式引用类型";,asp.net-core,async-await,razor-pages,Asp.net Core,Async Await,Razor Pages,基于 我对我的.cs进行了如下编辑: private readonly GroupAccessDetailsModel _context; public GroupAccessDetailsModel(GroupAccessDetailsModel context) { _context = context; } [BindProperty] public IList<OutputAccessRights> UsersAccessRights { get; set; } p
private readonly GroupAccessDetailsModel _context;
public GroupAccessDetailsModel(GroupAccessDetailsModel context)
{
_context = context;
}
[BindProperty]
public IList<OutputAccessRights> UsersAccessRights { get; set; }
public async Task<IActionResult> OnGetAsync()
{
UsersAccessRights = await _context.OutputAccessRights.ToListAsync();
if (UsersAccessRights == null)
{
return NotFound();
}
return Page();
}
但我的问题是在等待上下文中。OutputAccessRights.ToListAsync()
错误:无法通过表达式引用类型
我尝试用wait_context.GroupAccessDetailsModel.OutputAccessRights.ToListSync()替换它;但它不起作用。你知道我该怎么解决这个问题吗
错误:无法通过表达式引用类型
这是因为您使用的是模型,而不是DbContext
您首先需要学习如何使用:
然后,您可以按照教程中关于
OnGet
方法中的以下代码用于显示所有OutputAccessRights
数据
UsersAccessRights = await _context.OutputAccessRights.ToListAsync();
上一个线程的问题无法通过选择复选框列表。这意味着您可以显示数据,但无法将选择复选框传递到OnPost
我为Edit.cshtml.cs
所做的是测试OnPost
方法是否可以获取列表复选框。无需关心如何在OnGet
方法上设置OutputAccessRights
,只需在OnGet
方法上使用以前的代码即可
以下是关于如何使用EF Core的全部代码:
1.DbContext(\u context.OutputAccessRights
来自此处):
3.Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddDbContext<RazorContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("ConnectionName")));
}
5.然后您可以设置数据:
public class EditModel : PageModel
{
private readonly RazorContext _context;
public EditModel(RazorContext context)
{
_context = context;
}
[BindProperty]
public IList<OutputAccessRights> UsersAccessRights { get; set; }
public async Task<IActionResult> OnGetAsync()
{
UsersAccessRights = await _context.OutputAccessRights.ToListAsync();//set the data to UsersAccessRights
return Page();
}
public async Task<IActionResult> OnPostAsync(IList<OutputAccessRights> usersAccessRights)
{
//do your stuff...
}
}
公共类EditModel:PageModel
{
私有只读RazorContext\u上下文;
公共编辑模型(RazorContext上下文)
{
_上下文=上下文;
}
[BindProperty]
公共IList UsersAccessRights{get;set;}
公共异步任务OnGetAsync()
{
UsersAccessRights=wait _context.OutputAccessRights.ToListAsync();//将数据设置为UsersAccessRights
返回页();
}
公共异步任务OnPostAsync(IList usersAccessRights)
{
//做你的事。。。
}
}
"ConnectionStrings": {
"ConnectionName": "Server=(localdb)\\mssqllocaldb;Database=DatabaseName;Trusted_Connection=True;MultipleActiveResultSets=true"
}
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddDbContext<RazorContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("ConnectionName")));
}
PM>add-migration init
PM>update-database
public class EditModel : PageModel
{
private readonly RazorContext _context;
public EditModel(RazorContext context)
{
_context = context;
}
[BindProperty]
public IList<OutputAccessRights> UsersAccessRights { get; set; }
public async Task<IActionResult> OnGetAsync()
{
UsersAccessRights = await _context.OutputAccessRights.ToListAsync();//set the data to UsersAccessRights
return Page();
}
public async Task<IActionResult> OnPostAsync(IList<OutputAccessRights> usersAccessRights)
{
//do your stuff...
}
}