Чистый способ иметь JQuery включает в себя с ASP.Net MVC - PullRequest
5 голосов
/ 08 ноября 2008

Как вы справились с работой с jQuery

<script type="text/javascript" src="jquery.js"></script>

в Asp.Net MVC при работе с частичными представлениями / элементами управления представлением? По сути, я не хочу, чтобы jquery включался в главную страницу, потому что я не использую jquery во всех своих представлениях, но я также хочу, чтобы пользовательский элемент управления мог легко создавать включение jquery в нужные местоположение («голова») без создания дубликата jquery.

Лучшим способом было бы использовать ScriptManaager, но я не хочу полагаться на ASP.Net Ajax для этого в моем приложении. Есть ли «облегченный» ScriptManager, который я мог бы использовать, который также позволил бы недавно выпущенный intellisense для jquery?

Я создал WebControl, который предоставляет эту функциональность, но я не получаю поддержку intellisense для VS2008, что мне бы очень хотелось.

Надеюсь, это имеет смысл.

Ответы [ 4 ]

13 голосов
/ 09 ноября 2008

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

3 голосов
/ 08 ноября 2008

Не уверен, как сделать это только с частичными представлениями, хотя вы могли бы сделать это постранично с существующей технологией.

Вы можете создать ContentPlaceHolder на своей главной странице внутри тега head. В ваших пользовательских элементах управления просто включите jQuery в область содержимого ContentPlaceHolder ваших страниц.

1 голос
/ 16 декабря 2010

Аааааааааааааааааааааааааааааа, это сводит меня с ума, потому что это рассматривается как часть страницы ... но

<script src="<%=Url.Content("~/Content/js/jquery-1.2.3.min.js") %>" type="text/javascript"></script>
0 голосов
/ 08 ноября 2008

Вы всегда можете сделать это:

создайте легкий файл util.js, который есть на каждой странице, в него можно поместить различные общие элементы, а также:

function loadJSInclude(scriptPath, callback)
{
    var scriptNode = document.createElement('SCRIPT');
    scriptNode.type = 'text/javascript';
    scriptNode.src = scriptPath;

    var headNode = document.getElementsByTagName('HEAD');
    if (headNode[0] != null)
        headNode[0].appendChild(scriptNode);

    if (callback != null)    
    {
        scriptNode.onreadystagechange = callback;            
        scriptNode.onload = callback;
    }
}

Тогда, на ваш взгляд, просто поместите:

<script type='text/javascript'>
    if(typeof(someJqueryObject) == "undefined")        
        loadJSInclude('jquery.js', doYourStuff);        
    else        
        doYourStuff();

    function doYourStuff()
    {
        // jQuery will be loaded now, so you can do your stuff here.
    }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...