Bor*_*ris 3 c# razor asp.net-core razor-pages
System.Threading.Tasks.Task OnGetAsync(),Void OnGet()
我在Microsoft Visual Studio 2017中构建.NET Core 2.1应用程序时收到此错误.这是我认为其中包含错误的视图.它是主要的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()
{
}
}
Run Code Online (Sandbox Code Playgroud)
Razor页面使用基于约定的处理程序进行导航.
当前的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");
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1249 次 |
最近记录: |