У меня есть частичное представление (UserControl), который реализует простой пейджер у моего Asp. Сетевой проект MVC. Этому пейджеру нужен доступ к .js файлу, который должен быть включен точно однажды, независимо от того, сколько экземпляров управления пейджером присутствует на родительской странице.
Я попытался использовать Page.ClientScript.RegisterClientScriptInclude
, но это не имело никакого эффекта (я принимаю, потому что самородок кода был оценен слишком поздно для влияния на главное управление). Есть ли какая-либо простая альтернатива?
Установите флаг в HttpContext.Current.Items , когда вы отправляете скрипт в своей части - это словарь, который сохраняется для всего запроса. Например: [
if (!HttpContext.Current.Items.Contains("SentTheScript"))
{
HttpContext.Current.Items["SentTheScript"] = true;
Response.Write(Html.ScriptTag("Script"));
}
] Таким образом, он будет отрисован не более одного раза.
Добавьте его на главную страницу.
Тогда вы сможете гарантировать, что он будет включен только один раз, и вы его не забудете. С современным кэшированием нет никаких потерь производительности при включении его на каждой странице.
Page.ClientScript.RegisterClientScriptInclude
используется с традиционным ASP.net.
Поскольку вы используете asp.net-mvc, все, что вам нужно, это добавить директиву script
файла js
на страницу, которая использует этот пользовательский элемент управления.
Поскольку хорошей практикой является наличие только одного минифицированного файла css для всего сайта, вы, вероятно, захотите включить этот файл в основной минифицированный файл css.