В шаблоне редактора, как я могу положить JavaScript в разделе заголовка? - PullRequest
4 голосов
/ 29 июня 2011

У меня есть шаблон редактора для, скажем, даты:

@model DateTime
@section AdditionalJavaScript2
{
   /* some js code */
}

@Html.TextBox("", Model.ToString("d.M.yyyy"), new { @class = "date" }) 

Теперь я хотел бы добавить код js в раздел HEAD, но это не работает.

Конечно, у меня есть этот раздел в моем layout.cshtml:

<head>
  ...
  @RenderSection("AdditionalJavaScript2", required: false)
</head>

Работает с простого, но не с частичного вида (шаблон редактора).

Почему?

И есть ли обходной путь?

Спасибо

Игорь

1 Ответ

2 голосов
/ 29 июня 2011

Частичное представление не использует шаблон, оно возвращает «сырой» HTML, который будет включен в вашу страницу (от Javascript).Он не имеет доступа ни к чему, кроме возвращаемого им потока.

Подумайте об этом так: вы обычно вызываете частичное представление из Javascript / AJAX, чтобы получить какой-то новый html.Вы получаете возврат и заменяете какой-то DIV-тег.Как система (FireFox, Chrome, ...) может знать, что в теге HEAD есть какой-то дополнительный раздел данных, который должен что-то заменить.

Есть несколько обходных путей:

  • Не помещайте скрипт в ГОЛОВУ.
  • Добавьте переключатель параметров между HTML и скриптом.Вам нужны вызовы на стороне клиента, один для получения HTML и один для сценария.Вы включаете вызовы для частичного просмотра в двух местах на вашей странице.
  • Разделите скрипт и html, используя некоторый предопределенный тег, такой как <!-- SEPERATOR -->, и позвольте вызывающему коду разделить результат и поместить его в правильную позицию.
...