2012-04-11 3 views
0

мне нужна помощь с этим ..Обновить ViewData объект в renderPartial

У меня есть ViewData со списком клиентов и я кормить его, когда Индексный метод действия называется.

/* Указатель - метод, который открывает представление. */

Как только был вызван метод Index, переменная подается и отображается представление.

Затем у меня есть диалоговое окно, в котором отображается частичное представление, в котором есть таблица со списком клиентов.

<div id="popupClients" class="popUp" style= "display:none"> 
    <% Html.RenderPartial("ClientsPartialView", ViewData["clients"]); %> 

/* popupClients является диалог. */

/* ClientsPartialView - это частичное изображение с таблицей, отображающей идентификатор и имя клиентов. */

Вопрос: как я могу обновить данные представлений перед их отображением?

Я спрашиваю это потому, что, если кто-то вставить новый клиент, должен отображаться в PartialView

Thnxs!

ответ

0

Вы можете использовать Ajax, чтобы обновить часть своей страницы, которая представляет popupClients непосредственно перед отображением этого диалогового окна.

Если частичный вид делает, скажем, div, содержащий все содержимое для всплывающего окна, вы можете использовать Ajax, чтобы обновить что div, что-то вдоль линий:

function getCustomerList(searchCriteria) { 
    $.ajax({ 
     url: 'Home/GetClientList', 
     type: 'POST', 
     async: false, 
     data: { searchString: searchCriteria }, 
     success: function (result) { 
      $("#popupClients").html(result); 
      $(/*... do whatever you do now to show your dialog....*/ ; 
     } 
    }); 
}; 

UPDATE

Основываясь на ваш комментарий ...

Каждый раз, когда ваш код на стороне сервера работает (и вы только что показали м e серверный код в вашем комментарии), вы можете получать свежие данные. Когда ваш частичный просмотр обращается к контроллеру, ваш контроллер должен обновить модель из базы данных, если это бизнес-требование.

Что-то вдоль линий:

[OutputCache(Duration = 0)] 
public ActionResult _ClientList() 
{ 
    List<Clients> clientList = GetCurrentClientListsFromDB(); 

    return PartialView(clientList); 
} 

Это вызовет проверку в базе данных каждый раз, когда контроллер вызывается. Если допустимо пропустить последнее обновление, вы можете изменить значение OutputCache, чтобы сообщить механизму MVC о кешировании результата за заданное количество секунд. Вы также можете настроить OutputCache для обновления на основе SQL Dependency, чтобы он автоматически недействителен, когда есть изменение в базовой таблице, а не просто обновление в зависимости от прошедшего времени. Это сложнее настроить, но даст более точный результат.

+0

Возможно, я не выражаю правильно.

<% foreach (var item in Model) { %> <% } %>
ID NOMBRE
<%: item.ID %> <%: item.NOMBRE %>
Я должен обновить tab1, со списком клиентов – Fausto

+0

Я обновил свой ответ на основе этого комментария. –

+0

Thnxs you !!!!! – Fausto