异步处理期间的同步过程

时间:2015-10-04 15:32:56

标签: c# asp.net-mvc-3 asp.net-mvc-4 c#-4.0 async-await

我正在使用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准备好了吗?

1 个答案:

答案 0 :(得分:0)

从客户的角度来看,Controller中的异步操作等于非异步。

使用async标记操作只允许在请求DB时将线程释放回ThreadPool。

如果要异步填充零件,则需要使用AJAX。 如果您有兴趣,有一些有趣的方法,如this