System.Threading.Tasks.Task OnGetAsync(),Void OnGet()
我在Microsoft Visual Studio 2017中为.NET Core 2.1构建应用程序时收到此错误。我认为这是其中存在错误的视图。用于index.cshtml剃须刀主页面。
public class IndexModel : PageModel
{
private readonly AppDbContext _db;
public IndexModel(AppDbContext db)
{
_db = db;
}
public IList<Customer> Customers { get; private set; }
public async Task OnGetAsync()
{
Customers = await _db.Customers.AsNoTracking().ToListAsync();
}
public async Task<IActionResult> OnPostDeleteAsync(int id)
{
var contact = await _db.Customers.FindAsync(id);
if (contact != null)
{
_db.Customers.Remove(contact);
await _db.SaveChangesAsync();
}
return RedirectToPage();
}
public void OnGet()
{
}
}
答案 0 :(得分:7)
剃刀页面使用基于约定的处理程序进行导航。
当前的PageModel具有两个Get处理程序Tasks.Task OnGetAsync()
和Void OnGet()
,在异常中已明确说明。
该框架无法确定要使用哪个框架。
删除void OnGet
,因为它似乎未使用。
最好检查OnPostDeleteAsync
的命名,因为这也可能导致路由问题。
您可以为任何HTTP动词添加处理程序方法。最常见的 处理程序是:
OnGet
初始化页面所需的状态。 OnGet示例。OnPost
处理表单提交。
Async
命名后缀是可选的,但通常由惯例使用 用于异步功能。
public class IndexModel : PageModel {
private readonly AppDbContext _db;
public IndexModel(AppDbContext db) {
_db = db;
}
public IList<Customer> Customers { get; private set; }
public async Task<IActionResult> OnGetAsync() {
Customers = await _db.Customers.AsNoTracking().ToListAsync();
return Page();
}
public async Task<IActionResult> OnPostAsync(int id) {
var contact = await _db.Customers.FindAsync(id);
if (contact != null) {
_db.Customers.Remove(contact);
await _db.SaveChangesAsync();
}
return RedirectToPage("/Index");
}
}