我将Web应用程序从.Net Framework 4.6升级到Asp.Net Core 2.2 Razor Page,在此过程中,我将一堆代码从部分视图移到了 View Components < / strong>。在我的ActionResult
方法看起来像这样之前……
public async Task<ActionResult> OnGetAsync(int book, int chapter)
在我返回返回页面之前,它做了很多工作来填充所有局部视图。其中一部分是从数据库中读取数据,而我通过await
这样的调用来完成此操作……
Scriptures = await db.ByBookAndChapterAsync(book, chapter);
该代码已移至View Component InvokeAsync
方法,如...
public async Task<IViewComponentResult> InvokeAsync(int book, int chapter)
我的await
编译器抱怨没有ActionResult
调用数据库
异步方法缺少等待操作符
所以我更改了它,使其看起来像...
public ActionResult OnGet(int book, int chapter)
可以,但是这是最好的方法吗?是我的问题
另外,FWIW,这是我从 Razor Page 内调用我的 View Component 的样子,
<vc:scriptures book=@Model.BookId chapter=@Model.Chapter></vc:scriptures>
我将自己的ActionResult
转换为不是async
,并且可以,但这是正确的吗?我是否在不适当的情况下将同步与异步混合?
谢谢