Это полностью зависит от вашего приложения. У меня обоих было действие, возвращающее чистые данные (обычно JSON, а не XML), и обрабатывалось отображение в клиенте, а действие возвращало частичное представление. Для наиболее сложных сценариев отображения, я думаю, что маршрут с частичным просмотром является самым простым. По сути, вы возвращаете только ту часть страницы (HTML), которая будет обновлена. Вы используете javascript в обработчике обратного вызова AJAX, чтобы заменить соответствующий элемент (ы) на странице HTML-кодом, полученным с сервера. Обратите внимание, что вам нужно быть осторожным с привязкой обработчика событий, когда вы делаете это - почти всегда правильно использовать живые обработчики в jQuery 1.4+ и перепривязывать все, кроме обработчиков щелчков в jQuery 1.3.
Пример: Предполагается, что вы вызываете метод действия MVC, который возвращает частичное представление. Это будет вызывать действие show
на контроллере foo
каждые 5 секунд и обновлять containerToUpdate
(предположительно, DIV), возвращая html.
setInterval(
function() {
$.get( '<%= Url.Action( "show", "foo", new { id = Model.ID } ) %>',
function(html) {
$('#containerToUpdate').html( html );
});
}, 5000
);
Серверная сторона:
[AcceptVerbs( HttpVerbs.Get )]
public ActionResult Show( int id )
{
var model = ...
if (this.Request.IsAjaxRequest())
{
return PartialView( model );
}
else
{
return View( model );
}
}
Полный просмотр (не для AJAX) может не потребоваться - вы можете просто отобразить ошибку, если пользователь не должен обращаться к ней, кроме как через AJAX. Если вы поддерживаете и то, и другое, просто визуализируйте частичное внутри полного представления там, где это необходимо, чтобы повторно использовать код частичного представления.