2010-03-08 3 views
4

проблема: При первом полном запросе страницы мой контроллер вызывает слой ApplicationServices (прокси-сервер веб-службы для моего бизнес-уровня), чтобы заполнить коллекцию текущих служб, которые хранятся в моем собственном свойстве базового класса контроллера. Затем это должно отображаться в представлении. Все в контексте этого контроллера имеет доступ к этой «Коллекции служб». Теперь, когда я делаю дальнейшие вызовы к одному и тому же методу действий через AJAX Call, я, очевидно, вижу, что другой экземпляр этого контроллера означает, что мой набор сервисов пуст.ASP.NET MVC, поддерживая состояние модели между запросами Ajax

Так что, кроме повторного получения всей коллекции, где я буду хранить эту коллекцию, чтобы она сохранялась между запросами ajax? Должен ли я сохранить его как отдельный объект DomainModel, объект Session? .... поскольку ViewData не работает для меня obv. Простите мое невежество MVC :)

Любая помощь будет принята с благодарностью :)

ответ

2

Веб-существу без гражданства и MVC помогает вам идти вниз к металлу, то есть, MVC не пытается сделать что-то, что с учетом состояния не является, и это в основном путь к старому ASP: каждый запрос является его собственным запросом и не должен знать ничего о каком-либо другом запросе, который был выполнен в прошлом.

Я чувствую, что легче всего идти по этому маршруту, потому что он имеет тенденцию оставаться чистым, быстрым и помогает вам придерживаться лучших практик, таких как разделение проблем.

AJAX делает следующий шаг: идея AJAX заключается в том, что простая операция «удалить» может быть реализована как таковая, то есть вам нужно только авторизовать и выполнить один очень маленький запрос на уровне персистентности. Вот и все. Вам даже не нужно передавать измененную страницу пользователю. Достаточно простого машиночитаемого индикатора успеха/ошибки через JSON.

Если вы начнете привлекать множество услуг для небольших запросов AJAX, вы действительно потеряете большую часть того, что хорошо.

Я также предлагаю вам не хранить кучу услуг в базовом контроллере. Скорее всего, для большинства запросов вам понадобится только небольшое подмножество. Лучше всего извлекать только те услуги, которые вам абсолютно необходимы.

+0

Thankyou.I имеет вид услуг, который содержит плагин jqueryUI tabs. На первой вкладке я отменяю полный список сервисов, а также оттягивая полный список, затем фильтрую этот список в 4 отдельные категории коллекции в зависимости от определенных флагов: 1) можно контролировать 2) требуется обновление 3) является резервной копией сервис и т. д. Когда вы выбираете каждую из вкладок, я вытаскиваю их соответствующие коллекции для своей вкладки. С учетом вашего ответа, я говорю, что я должен сначала выполнить эту фильтрацию на уровне хранимой процедуры, а затем просто ударить по db на каждом последующем запрос, хотя для каждого tabor каждый запрос JqGrid? – Podders

+0

Я не совсем понимаю, что вы имеете в виду. Это не имеет ничего общего с хранимыми процедурами. Сами вкладки основаны на некоторых списках сервисов? Затем вы должны вытащить этот список в соответствующее действие по запросу. Теперь фактическое содержимое табуляции можно загрузить с помощью AJAX: им не нужно ничего тянуть, кроме собственной информации, и они будут обслуживаться другим действием на вашем контроллере. Затем содержимое вкладок обновляется по запросу. Это минимизирует нагрузку на сервер (если вы не знаете, что пользователи всегда будут использовать все вкладки), но у пользователей будет (небольшая) задержка. – mnemosyn

+0

Soz для путаницы, так как я очень ценю вашу помощь! Хорошо, хорошо, что вкладки themsleves будут жестко закодированы в индексном представлении, поскольку каждая вкладка всегда будет использоваться (Monitor | backup | Renewal | Full и т. Д.), Содержимое каждого tab будет подмножеством полного набора услуг (который я получил на 1-й странице полной страницы сайта).Поскольку я должен фильтровать весь список услуг в одном из контроллеров, чтобы разбить список на категории различий (ILists). Затем каждый отдельный список заполняет частичное представление, которое возвращается через AJAX для каждого из соответствующих им вкладок. – Podders

Смежные вопросы