System.Threading.Tasks.Task OnGetAsync(), Void OnGet()
在 Microsoft Visual Studio 2017 中为 .NET Core 2.1 构建应用程序时收到此错误。这是我认为其中包含错误的 View 。它用于主 index.cshtml razor 页面。
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()
{
}
}
最佳答案
Razor 页面使用基于约定的处理程序进行导航。
当前 PageModel 有两个 Get 处理程序 Tasks.Task OnGetAsync()
和 Void OnGet()
,如异常中明确所述。
该框架无法确定使用哪一个。
删除 void OnGet
,因为它似乎未使用。
还建议检查 OnPostDeleteAsync
的命名,因为这也可能导致路由问题。
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");
}
}
引用 Introduction to Razor Pages in ASP.NET Core
关于c# - InvalidOperationException : Multiple handlers matched. 以下处理程序匹配路由数据并满足所有约束:,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51187908/