2015-10-04 88 views
0

我正在使用ASP.NET MVC Razor。異步過程中的同步過程

在我的解決方案中,我使用了一個只有一個Action方法的控制器。佈局有左導航,頂部和頁腳。這三部分的Html部分放置在部分視圖中,我在下面調用佈局中的部分視圖。

<!DOCTYPE html> 
<html> 
<head> 
    @{Html.RenderPartial("HeaderScripts");} 
</head> 
<body class="nav-md"> 

    @{Html.RenderPartial("LeftSideNavigations");} 
    @{Html.RenderPartial("TopView");} 

    <div class="right_col" role="main"> 
     @RenderBody() 
    </div> 

    @{Html.RenderPartial("FooterScripts");} 
</body> 
</html> 

這是由於我的操作方法如下所示。

[AttributeRouting.Web.Mvc.Route("All-Categories")] 
public async Task<ActionResult> Categories() 
{ 
    var list = await _category.CategoryList(null); 
    return View(list.Value); 
} 

這裏的問題是...結果來使用異步,所以我甚至不能來電局部視圖的操作方法在佈局如下圖所示。

@{ 
    Html.RenderAction("ActionName"); 
} 

因爲我必須在操作方法中寫一些登錄。我知道在VS 2013中我們不能稱它爲:Html.RenderAction("ActionName"),因爲框架決不允許這樣做。

問題:有沒有什麼辦法調用部分視圖,除了在DOM上使用 JQuery?

回答

0

從客戶端角度看,Controller中的異步操作等於非異步操作。

使用async標記操作只允許在請求數據庫時將線程釋放回ThreadPool。

如果你想異步填充你的零件,那麼你將需要使用AJAX。 有一些有趣的方法,如果你有興趣,如this