Как передать данные из дочернего действия в макет в ASP.NET MVC

У меня есть представление, которое использует макет, а также выполняет дочернее действие.

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

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

2 ответа

Решение

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

Я был обеспокоен тем, что порядок обработки представлений не будет предсказуемым (то есть я не мог быть уверен, что данные будут записаны в HttpContext до того, как будут считаны из него), но оказывается, что порядок обработки полностью предсказуемы.

В вашем дочернем действии вы можете настроить данные как data-*** атрибуты, а затем использовать JavaScript (или jQuery), чтобы прочитать их обратно в вашей части.

Например, детское действие:

<div id="somedata" data-customerid="123" data-reference="xyz">
</div>

Тогда в вашем частичном:

<script> 
   ....
   var customerId = $("#somedata").data("customerid");
   var reference = $("#somedata").data("reference");
</script>

Надеюсь это поможет

Другие вопросы по тегам