Я думаю, что решение, на которое вы ссылаетесь, будет работать для вас. Вам просто нужно, чтобы ваше первоначальное действие контроллера сразу же вернулось с сообщением «пожалуйста, подождите», а затем вызовите AJAX для фактического получения содержимого на основе вашей обработки. Если запрос действительно занимает 5-10 секунд, вам также может потребоваться изменить значение тайм-аута для запроса AJAX, чтобы он мог завершиться. Я не знаю, каково время ожидания по умолчанию, но оно может быть меньше, чем вам нужно.
РЕДАКТИРОВАТЬ Пример:
Посмотреть код:
<script type="text/javascript">
$(document).ready( function() {
$.ajax({
type: "POST",
url: '<$= Url.Action("GetSlowData","Controller") %>',
data: 'id=<%= ViewData["modelID"] %>',
timeout: 15000, // wait upto 15 secs
success: function(content){
$("#container").html(content);
}
});
});
</script>
...
<div id="#container">
Please wait while I retrieve the data.
</div>
Контроллер
public ActionResult ViewMyData( int id )
{
ViewData["modelID"] = id;
return View();
}
[AcceptVerbs( HttpVerbs.Post )]
public ActionResult GetSlowData( int id )
{
var model = ... do what you need to do to get the model...
return PartialView(model);
}
Вам также понадобится частичное представление (ViewUserControl), которое принимает вашу модель и отображает представление модели. Обратите внимание, что это не завершено - вам нужно добавить обработку ошибок, вы можете рассмотреть, что произойдет, если javascript не включен, ...