Синхронно передавать словарь данных в представление MVC с контроллера

мое представление показывает результаты для нескольких случаев, поэтому у меня есть около трех типов панели результатов

и каждый результат должен отображать все элементы, соответствующие типу панели результатов.

  • Я делаю частичный вид, чтобы отобразить каждый элемент
  • сделать цикл for для отображения всех элементов в каждой панели результатов
  • представление с тремя панелями результатов
  • каждая панель - закодирована как html div - имеет частичный вид для подэлементов

Что я думаю сделать, так это найти, чтобы передать словарь со строкой типа в качестве ключа и списка моих элементов - Список - и в каждом вызове частичного управления передать элемент словаря с такой панелью, как

<%= Html.Partial("myPartialControl",myDictionary["KindOfPanel"] %>

Так как же синхронно передать этот словарь моему представлению? Есть ли хорошая идея для этой проблемы, особенно вид отверстия должен обновляться каждые 5 секунд! например, делать это с помощью json или любого решения ajaxing.


person AshOoO    schedule 13.02.2013    source источник
comment
Я могу что-то упустить, но вы не можете просто передать словарь в качестве аргумента для View() в вашем контроллере?   -  person Andre Loker    schedule 13.02.2013
comment
Да, я могу, но извините за отсутствие синхронного слова в вопросе   -  person AshOoO    schedule 13.02.2013
comment
Вы имеете в виду асинхронно? Я полагаю, вы хотите асинхронно загрузить содержимое частичного представления после загрузки страницы в браузер, верно?   -  person Andre Loker    schedule 13.02.2013
comment
Нет, мне нужно синхронно обновлять содержимое страницы каждые 5 секунд без перезагрузки страницы.   -  person AshOoO    schedule 13.02.2013


Ответы (1)


Слово асинхронно.

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

Если в первом случае у вас есть представление, которое делает это (на основе вышеизложенного)

...bla
<div id="my-container">
   <%= Html.Partial("myPartialControl",myDictionary["KindOfPanel"] %>
</div>

Затем создайте действие, которое выглядит примерно так в вашем контроллере:

public ActionResult MyPartialControl()
{
    return PartialView("myPartialControl", theData);
}

Затем добавьте следующую функцию JQuery и активируйте ее, когда захотите:

 $('.my-trigger').click(function(){
      $.get('@Url.Action("MyPartialControl")', function(data) {
         $('#my-container').html(data); 
      });
 });

Написано без компилятора. Я не проверял это, но это должно работать, очевидно, заполнить пробелы и поиграться, но это общая идея.

person shenku    schedule 15.02.2013