Как я могу включить внешний файл JavaScript ровно один раз для частичного просмотра? - PullRequest
5 голосов
/ 12 марта 2010

У меня есть частичное представление (UserControl), которое реализует простой пейджер в моем проекте Asp.Net MVC. Этот пейджер должен иметь доступ к файлу .js, который должен быть включен ровно один раз, независимо от того, сколько экземпляров элемента управления пейджером присутствует на родительской странице.

Я пытался использовать Page.ClientScript.RegisterClientScriptInclude, но это не имело никакого эффекта (я полагаю, потому что слепок кода был оценен слишком поздно, чтобы повлиять на управление головой). Есть ли простая альтернатива?

Ответы [ 3 ]

2 голосов
/ 12 марта 2010

Добавьте его на главную страницу.

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

2 голосов
/ 12 марта 2010

Установите флаг в HttpContext.Current.Items , когда вы отправляете сценарий в своей части - это словарь, который задерживается для всего запроса.Например:

if (!HttpContext.Current.Items.Contains("SentTheScript"))
{
    HttpContext.Current.Items["SentTheScript"] = true;
    Response.Write(Html.ScriptTag("Script"));
}

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

1 голос
/ 12 марта 2010

Page.ClientScript.RegisterClientScriptInclude используется с традиционным ASP.net.

Поскольку вы используете asp.net-mvc, все, что вам нужно, это добавить директиву script файла js на страницу, которая использует этот пользовательский элемент управления.

Поскольку рекомендуется иметь только один минимизированный файл CSS для всего сайта, вы, вероятно, захотите включить этот файл в основной минимизированный файл CSS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...