Подтвердить что ты не робот

Добавление ссылки script к тегу html head с частичного представления

Как мне добавить тег script, например

<script src="somejsfile"></script>

или

<script type="text/javascript>some javascript</script>

в верхний тег страницы с частичного просмотра?


Обновление: ответьте на старый вопрос Это касается ASP.NET MVC. Мы можем использовать RenderSection. Здесь образец для MVC 3 с использованием механизма просмотра Razor:

макет или главная страница:

<html>
  <head>
  <script ...></script>
  <link .../>
  @RenderSection("head")
  </head>
  <body>
  ...
  @RenderBody()
  ...
  </body>
</html>

Просмотр, например. Главная:

@section head{
  <!-- Here is what you can inject the header -->
  <script ...></script>
  @MyClass.GenerateMoreScript()
}
<!-- Here is your home html where the @RenderBody() located in the layout. -->
4b9b3361

Ответ 1

Даже если ответ спасибо работает, это не очень хорошо, поскольку намерение MVC должно быть неактивным по своей природе. Кроме того, его решение не позволяет вам размещать свои сценарии, куда им следует идти - большинство сайтов хотят, чтобы их объявления script находились в самой нижней части их страницы непосредственно перед тегом </body>, так как это лучше всего подходит для производительности и поисковой оптимизации.

Есть ответ, спасибо Дарин Димитров:

Использование разделов в шаблонах редактора/дисплея

Его ответ позволяет вам регистрировать скрипты с частичного представления в макете.

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

Для этого есть два способа обхода:

  • Зарегистрировать только 1 script с частичного представления -или-
  • Измените его реализацию HTML Helper для поддержки заказа

Я пытаюсь работать над собой позже.

Удачи.

Ответ 2

Частичные представления UserControl s. Вы не можете использовать метод RegisterClientScriptInclude ClientScriptManager?

protected override void OnLoad(EventArgs e) {
    base.OnLoad(e);
    Page.ClientScript.RegisterClientScriptInclude("some key", "http://website/javascript.js");
}