Как передать данные из дочернего действия в макет в 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>
Надеюсь это поможет