В вашем контроллере:
public JsonResult GetSomething(int id)
{
return Json(service.GetSomething(id));
}
В представлении (javascript, используя JQuery):
$('#someLink').click(function()
{
var action = '<%=Html.ResolveUrl("~/MyController.mvc/GetSomething/")%>' + $('#someId').val() + '?x=' + new Date().getTime();
$('#loading').show()
$.getJSON(action, null, function(something)
{
do stuff with something
$('#loading').hide()
});
});
Обратите внимание, что это предполагает маршрут, по которому после действия указывается id. Параметр 'x' в действии должен победить агрессивное кэширование в IE.
В представлении (разметка):
<img id="loading" src="images/ajax-loader.gif" alt=""/>
<!-- use a css stlye to make display:none -->
Получить GIF-файлы загрузчика здесь .
Также обратите внимание, что вам не нужно делать это с Json. Вы можете получить другие вещи, такие как HTML или XML, из действия контроллера, если хотите.