2015-10-04 57 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