如果View组件仅进行异步调用,我是否需要对Razor Page OnGet ActionResult进行异步处理

时间:2019-02-02 00:39:39

标签: c# async-await razor-pages asp.net-core-viewcomponent

我将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,并且可以,但这是正确的吗?我是否在不适当的情况下将同步与异步混合?

谢谢

0 个答案:

没有答案