Ошибка: невозможно ссылаться на тип через выражение.
Это потому, что вы используете модель вместо DbContext.
Сначала необходимо научиться используйте Entity Framework Core :
Тогда вы можете следовать учебнику о Razor Pages с Entity Framework Core
Следующий код в методе OnGet
используется для отображения всех данных OutputAccessRights
.
UsersAccessRights = await _context.OutputAccessRights.ToListAsync();
Проблема предыдущего потока не может пройти список флажков выбора. Это означает, что вы можете отобразить данные, но не можете передать флажок выбора OnPost
.
То, что я сделал для Edit.cshtml.cs
, - это проверка метода OnPost
, может ли он получить флажок списка или нет. Не нужно заботиться о том, как установить OutputAccessRights
на OnGet
method, просто используйте свой предыдущий код для OnGet
method.
Вот весь код о том, как использовать EF Core:
1.DbContext (_context.OutputAccessRights
отсюда):
public class RazorContext : DbContext
{
public RazorContext (DbContextOptions<RazorContext> options)
: base(options)
{
}
public DbSet<OutputAccessRights> OutputAccessRights { get; set; }
}
2.appSettings. json (здесь я использую сервер sql по умолчанию в vi sual studio):
"ConnectionStrings": {
"ConnectionName": "Server=(localdb)\\mssqllocaldb;Database=DatabaseName;Trusted_Connection=True;MultipleActiveResultSets=true"
}
3.Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddDbContext<RazorContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("ConnectionName")));
}
4. Запустите командную строку в диспетчере пакетов Nuget:
PM>add-migration init
PM>update-database
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...
}
}