Как я могу использовать атрибут defer script для пакетов ASP MVC 4 со скриптами. Render - программирование
Подтвердить что ты не робот

Как я могу использовать атрибут defer script для пакетов ASP MVC 4 со скриптами. Render

Я просмотрел Google и Stackoverflow и не нашел ответа для этого. Есть ли какой-либо встроенный способ сделать пакет выполненным как дефис, или кто-то знает способ вспомогательного расширения, который кто-то написал для этого?

4b9b3361

Ответ 1

Попробуйте обновить веб-оптимизацию до версии 1.1.0 на сайт Codeplex или через пакет Nuget

В версии 1.1.0 они включали строки шаблонов элементов. Поэтому, если вы хотите, чтобы тег script содержал атрибут defer, вы можете легко сделать это:

@Scripts.RenderFormat("<script src='{0}' defer></script>","~/bundles/jquery")

и будет создана следующая разметка:

<script src="/Scripts/jquery-1.7.1.js" defer></script> 

Ответ 2

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

Добавить новый класс С#

// --------------------------------------------------------------------------------------------------------------------
// <copyright file="Scripts7.cs" company="Believe">
//   http://believeblog.azurewebsites.net/
// </copyright>
// --------------------------------------------------------------------------------------------------------------------

using System.Web;
using System.Web.Optimization;

namespace MVCExtension
{
    /// <summary>
    ///     The scripts.
    /// </summary>
    public static class Scripts
    {
        /// <summary>
        /// Render scripts as deferred
        /// </summary>
        /// <param name="paths">
        /// The paths.
        /// </param>
        /// <returns>
        /// The <see cref="IHtmlString"/>.
        /// </returns>
        public static IHtmlString RenderDefer(params string[] paths)
        {
            return Scripts.RenderFormat(@"<script src='{0}' defer></script>", paths);
        }
    }
}

Затем используйте синтаксис Razor:

@Scripts.RenderDefer("~/bundles/jquery")

Синтаксис Webform:

<%: Scripts.RenderDefer("~/bundles/jquery") %>

Ответ 3

Вы можете использовать BundleTable.Bundles.ResolveBundleUrl:

<script src="@(BundleTable.Bundles.ResolveBundleUrl("~/bundles/jquery"))" defer></script>