2017-08-27 75 views
0

如果我在if語句範圍之外調用一個ViewComponent,它們都呈現得很好,但是如果我嘗試在if語句中調用它們,那麼它們不會產生錯誤,只會在網站。InvokeComponent from if語句

什麼導致他們不在塊內渲染?

_layout的Razer代碼:

 @if (ViewData["MenuName"] != null) { 
     await Component.InvokeAsync("MensMenu"); 
    } 
    else{ 
     await Component.InvokeAsync("DefaultMenu"); 
    } 

家庭控制器

public IActionResult Index() 
    { 
     ViewData["MenuName"] = "HomeMenu"; 
     return View(); 
    } 
+0

我相信那是因爲你忽略了最終的任務。考慮將'Index'的簽名更改爲'public Task Index()' – orhtej2

+0

@ orhtej2我有視圖組件控制器中的異步任務public Async Task InvokeAsync()' – prospector

+1

我想出了答案這個問題,並張貼在下面。 – prospector

回答

1

的代碼應該是:

@if (ViewData["MenuName"] != null) { 
     @await Component.InvokeAsync("MensMenu"); 
    } 
    else{ 
     @await Component.InvokeAsync("DefaultMenu"); 
    } 

我忘了的await之前的@。