частичные - Внедрение содержимого в определенные разделы из частичного представления ASP.NET MVC 3 с Razor View Engine

частичные - Внедрение содержимого в определенные разделы из частичного представления ASP.NET MVC 3 с Razor View Engine

Вы не можете использовать части с частичным представлением.

Включите в свой частичный вид. Он выполняет функцию после загрузки jQuery. Вы можете изменить условие условия для вашего кода.

У меня этот раздел определен в моем _Layout.cshtml

Я могу легко использовать его с точки зрения:

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

Предположим, что это моя страница просмотра:

Мне нужно добавить некоторый контент в раздел « Scripts » из частичного просмотра части « _myPartial .

Как я могу это сделать?

Если у вас есть законная необходимость запускать некоторые js из partial , вот как вы могли это сделать, требуется jQuery :

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

ИСПОЛЬЗОВАНИЕ

Создайте "раздел"

Типичный сценарий: в частичном представлении включайте только блок один раз, независимо от того, сколько раз частичное представление повторяется на странице:

В частичном представлении включите блок для каждого временного использования:

В частичном представлении включайте только один блок, независимо от того, сколько раз частичное повторяется, но позже выведите его по имени, when-i-call-you :

Оформить «разделы»

(т. е. отобразить отложенный раздел в родительском представлении)

Используя Mvc Core, вы можете создать аккуратные scripts TagHelper, как показано ниже. Это можно легко превратить в тег section где вы также укажете ему имя (или имя берется из производного типа). Обратите внимание, что инжекция зависимостей должна быть настроена для IHttpContextAccessor .

При добавлении скриптов (например, в частичном)

При выводе скриптов (например, в файле макета)

Код

Первое решение, о котором я могу думать, - использовать ViewBag для хранения значений, которые нужно визуализировать.

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

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

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

Вот как выглядит вставка части в частичном представлении:

А на странице вставка частичного представления .

Вы также можете использовать этот метод для определения содержимого раздела программно в любом классе.

Существует фундаментальный недостаток в том, как мы думаем о сети, особенно при использовании MVC. Недостатком является то, что JavaScript как-то ответственен за представление. Представление - это представление, JavaScript (поведенческий или другой) - это JavaScript. В шаблоне MVVM от Silverlight и WPF мы сталкиваемся с «представлением первой» или «первой моделью». В MVC мы всегда должны пытаться рассуждать с точки зрения модели, и JavaScript во многом является частью этой модели.

Я бы предложил использовать шаблон AMD (я сам вроде RequireJS ). Отделите свой JavaScript в модулях, определите свою функциональность и подключите свой html к JavaScript, вместо того чтобы полагаться на представление для загрузки JavaScript. Это очистит ваш код, разделит ваши проблемы и облегчит жизнь всем одним махом.

У меня была эта проблема и я использовал this технику.

Это лучшее решение, которое я нашел очень гибким.

Также проголосуйте here чтобы добавить поддержку декларации кумулятивного раздела

Цель OP состоит в том, что он хочет определить встроенные скрипты в свой Partial View, и я предполагаю, что этот скрипт специфичен только для этого Partial View и включает этот блок в его секцию скриптов.

Я понимаю, что он хочет, чтобы Partial View был автономным. Идея аналогична компонентам при использовании Angular.

Моим способом было бы просто сохранить сценарии внутри Partial View как есть. Теперь проблема в том, что при вызове Partial View он может выполнять скрипт там перед всеми другими скриптами (который обычно добавляется к нижней части страницы макета). В этом случае у вас есть сценарий Partial View, ожидающий других скриптов. Есть несколько способов сделать это. Простейший, который я использовал ранее, использует событие на body .

На моем макете у меня было бы что-то внизу:

Затем на моем частичном представлении (внизу):

Другое решение - использовать стек, чтобы выталкивать все ваши скрипты и вызывать каждого в конце. Другим решением, как уже упоминалось, является шаблон RequireJS / AMD, который также хорошо работает.

Это помогло мне разрешить совместное размещение javascript и html для частичного просмотра в том же файле. Помогает с процессом мысли видеть html и связанную с ним часть в том же файле с частичным представлением.

В представлении, в котором используется Partial View, называемый "_MyPartialView.cshtml"

В файле с частичным представлением

Я решил этот совершенно другой маршрут (потому что я спешил и не хотел реализовывать новый HtmlHelper):

Я завернул мой Partial View в большом выражении if-else:

Затем я дважды вызывал Partial с пользовательской ViewData:

вы можете использовать свою папку / index.cshtml в качестве главной страницы, а затем добавить скрипты раздела. Затем в вашем макете вы:

и ваш index.cshtml:

и он будет работать над всеми вашими частичными просмотрами. Это работает для меня

Вы можете использовать эти методы расширения : (Сохранить как PartialWithScript.cs)

Используйте следующее:

Пример partial: (_MyPartial.cshtml) Поместите html в if и js в else.

В вашем _Layout.cshtml или везде, где вы хотите, чтобы скрипты из частичных объектов были визуализированы, поставьте следующий (один раз): он будет отображать только javascript всех партиций на текущей странице в этом месте.

Затем, чтобы использовать ваши частичные, просто сделайте это: он отобразит только html в этом месте.

предположим, что у вас есть частичный вид, называемый _contact.cshtml, ваш контакт может быть юридическим (именем) или физическим субъектом (имя, фамилия). ваш взгляд должен заботиться о том, что отображается, и что может быть достигнуто с помощью javascript. поэтому может потребоваться отложенный рендеринг и внутренний вид JS.

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

также обратите внимание, что MVC 6 будет иметь так называемый компонент View, даже фьючерсы MVC имели некоторые подобные вещи, и Telerik также поддерживает такую ​​вещь .

📎📎📎📎📎📎📎📎📎📎