ユースケースは単純です。_Layout.cshtml には、ログインしているユーザーの情報が表示されます。その情報は毎回更新する必要があります。
私はそれを行う2つの方法を見つけました
- 後で _Layout.cshtml で使用されるメソッド セットに と があり
BaseController
ますOnActionExecuting
。ViewBag.UserInfo = ...;
_Layout.cshtml
で_@{Html.RenderAction("GlobalUserInfo", "UserInfo");}
問題は、非同期メソッドから UserInfo が返された場合、これら 2 つの方法がデッドロックまたは例外で惨めに失敗することpublic async Task<UserInfo>GetUserInfo(){...}
です。
問題はこれです: async/await を使用してデータを取得するときに、すべてのアクションで ViewBag プロパティを設定する方法。