Нельзя указать макет для представления компонента вида. По сути, это частичная точка зрения. Ко времени обработки компонента вида основной макет уже установлен в камне. Вам следует использовать библиотеку загрузки сценариев, чтобы условно включить ваши дополнительные сценарии, а затем вывести JavaScript, обслуживающий ваш компонент представления, и запустить его после завершения загрузки связанных сценариев.
Для этого вы можете использовать различные библиотеки / методы: CommonJS, AMD, RequireJS и т. Д. Вам нужно будет провести некоторое исследование и выяснить, какая из них лучше всего подходит для вас. Однако это преобразующая вещь. Это изменит весь способ обработки сценариев в приложении и, как следствие, может потребовать некоторой существенной реструктуризации всего существующего.
Более простой подход - просто включить скрипт в основной макет. Если ваш макет включает в себя этот компонент вида, то в любом случае он всегда будет нуждаться в сценариях, поэтому просто сделайте его статичным. У него нет теплых размышлений о полностью автономной единице функциональности, которой вы хотите, чтобы ваш компонент представления был, но для его достижения, вероятно, потребуется гораздо больше усилий, которые оправданы или разумны для этого конкретного сценарий.
Для чего бы то ни было, вы можете немного оптимизировать ситуацию, предварительно загрузив сценарии с помощью тега <link rel="preload" href="..." as="script" />
. Это может привести к тому, что браузеры поддержки продолжат загрузку скрипта, фактически не запуская его (который блокирует рендеринг). Затем, к тому времени, когда вы на самом деле включите скрипт перед закрывающим тегом body, он, вероятно, уже хорош, и тег script просто предложит браузеру запустить его.
UPDATE
Еще одним вариантом является использование клиентской библиотеки, которая поддерживает «компоненты». Это будет замена для вашего компонента представления, а не то, что вы добавите в дополнение. Тем не менее, преимущество клиентского компонента состоит в том, что вы можете содержать все функции JavaScript в нем, а затем библиотека просто перебирает ваш документ в конце и подключает все. Мне лично нравится Vue, но есть и другие варианты, такие как React, Ember, Angular и т. Д. Проконсультируйтесь с документацией по каждому из них, чтобы оценить, предпочитаете ли вы этот подход вместо этого и какую конкретную библиотеку предпочитаете. Все они, по сути, делают одно и то же, но у каждого из них есть свои уникальные способы добраться туда.
Мне лично нравится Vue, потому что она легкая и в основном ненавязчивая. Это не обязательно заставляет вас делать что-то определенным образом, так что вы можете иметь немного больше свободы в этом отношении. Такие библиотеки, как React и Angular, имеют тенденцию быть более самоуверенными, и, поскольку они больше ориентированы на создание одностраничных приложений, иногда может быть сложно разделить обязанности при рендеринге на стороне сервера, таком как представления Razor. Только мое мнение, хотя.