AJAX с jQuery - хороший способ для достижения этой цели. Так, например, вы можете поместить div-заполнитель содержимого в вашу разметку:
<div id="result" data-remote-url="@Url.Action("Load", "SomeController")"></div>
и затем после загрузки DOM:
$(function() {
$.ajax({
url: $('#result').data('remote-url'),
type: 'POST',
beforeSend: function() {
// TODO: you could show an AJAX loading spinner
// to indicate to the user that there is an ongoing
// operation so that he doesn't run out of patience
},
complete: function() {
// this will be executed no matter whether the AJAX request
// succeeds or fails => you could hide the spinner here
},
success: function(result) {
// In case of success update the corresponding div with
// the results returned by the controller action
$('#result').html(result);
},
error: function() {
// something went wrong => inform the user
// in the gentler possible manner and remember
// that he spent some of his precious time waiting
// for those results
}
});
});
, где действие контроллера загрузки позаботится о связи с удаленными службами и вернет частичное представление, содержащее данные:
public ActionResult Load()
{
var model = ... go ahead and fetch the model from the remote service
return PartialView(model);
}
Теперь, если выборка данных требует интенсивного ввода-вывода, вы можете воспользоваться асинхронными контроллерами портами завершения ввода-вывода, которые позволят вам не подвергать опасности рабочие потоки во время длительной операции. получения данных из удаленного источника.