2015-10-04 4 views
0

Я использую ASP.NET MVC Razor.Процесс синхронизации во время процесса Async

В моем решении я использовал контроллер только с одним действием. Макет имеет левую навигацию, верхнюю часть и нижний колонтитул. Часть 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"); 
} 

Как я должен написать логин в методах действий. Я знаю, что мы не можем назвать это: Html.RenderAction("ActionName") в VS 2013, поскольку Framework никогда не позволит этого.

Вопрос: Есть ли способ вызвать частичные виды, кроме JQuery на DOM готов?

ответ

0

Асинхронные действия в Controller, с точки зрения клиента, равны не-асинхронному.

Маркировка Действие с помощью async позволяет освобождать поток обратно к ThreadPool при запросе DB.

Если вы хотите заполнить свои детали асинхронно, вам необходимо использовать AJAX. Есть интересные методы, если вы заинтересованы, например this.