Visual Studio 2012 SP3 меняет ссылку href при использовании ASP.NET в режиме просмотра - программирование

Visual Studio 2012 SP3 меняет ссылку href при использовании ASP.NET в режиме просмотра

Я использую VS 2012 SP3, в котором у меня есть веб-сайт ASP.NET. В моем "Default.aspx" у меня есть следующая ссылка

<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" runat="server" rel="stylesheet" />

Всякий раз, когда я использую представление дизайна для своей страницы, например, вставка новой строки в таблицу, она меняет ее на

<link href="#" onclick="location.href='http://localhost:50309/netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css'; return false;" runat="server" rel="stylesheet" />

Это становится довольно раздражающим.

Кто-нибудь знает, как отключить эту функцию?

Я также хотел бы отметить, что у меня есть Performance Power Tools 2012, установленный Web Essentials 2012 (но я отключил их обоих и все еще не повезло Спасибо!

Обновление 1: Шаги по воспроизведению

  • Создайте новую страницу .aspx

  • Вставить <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" /> между тегами заголовка.

  • Перейдите в режим разделения

  • Напишите текст между div

  • href изменяется на <link href="#" onclick="location.href='http://localhost:50309/netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css'; return false;" rel="stylesheet" /> (порт может отличаться: D)

Обновление 2: Отчет о подключении Microsoft Bug Connect

https://connect.microsoft.com/VisualStudio/feedback/details/793557/visual-studio-2012-changing-link-href-when-using-asp-net-in-design-view#details

4b9b3361

Ответ 1

При использовании пакетов ASP.NET Script вы можете предоставить места CDN, где может быть найдена библиотека Script. Когда вы также добавляете код локально, вы получаете возможность отлаживаться от неминифицированной версии, в то время как версия CDN будет использоваться, когда сайт работает в процессе производства.

См. следующую документацию по настройке пакетов Script в веб-формах ASP.NET.

в основном вам нужно добавить пару строк в Global.asax:

void Application_Start(object sender, EventArgs e)
{
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

И затем создайте свой пакет следующим образом:

public static void RegisterBundles(BundleCollection bundles)
{
    //bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
    //            "~/Scripts/jquery-{version}.js"));

    bundles.UseCdn = true;   //enable CDN support

    //add link to jquery on the CDN
    var jqueryCdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js";

    bundles.Add(new ScriptBundle("~/bundles/jquery",
                jqueryCdnPath).Include(
                "~/Scripts/jquery-{version}.js"));

    // Code removed for clarity.
}

И ссылайтесь на него так:

<asp:PlaceHolder runat="server">        
     <%: Scripts.Render("~/bundles/modernizr") %>
     <%: Scripts.Render("~/bundles/jquery") %>
     <%: Scripts.Render("~/bundles/jqueryui") %>
</asp:PlaceHolder>

Это должно понравиться обозревателю и редактору.


Вы также можете настроить <scriptmanager> для автоматического возврата к CDN с помощью следующих фрагментов кода:

<asp:ScriptManager runat="server" EnableCdn="true">
    <Scripts>
        <asp:ScriptReference Name="jquery" />
        <asp:ScriptReference Name="jquery.ui.combined" />
    </Scripts>
</asp:ScriptManager>

И эта конфигурация:

var mapping = ScriptManager.ScriptResourceMapping;
// Map jquery definition to the Google CDN
mapping.AddDefinition("jquery", new ScriptResourceDefinition
{
    Path = "~/Scripts/jquery-2.0.0.min.js",
    DebugPath = "~/Scripts/jquery-2.0.0.js",
    CdnPath = "http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js",
    CdnDebugPath = "https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.js",
    CdnSupportsSecureConnection = true,
    LoadSuccessExpression = "window.jQuery"
});

// Map jquery ui definition to the Google CDN
mapping.AddDefinition("jquery.ui.combined", new ScriptResourceDefinition
{
    Path = "~/Scripts/jquery-ui-1.10.2.min.js",
    DebugPath = "~/Scripts/jquery-ui-1.10.2.js",
    CdnPath = "http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js",
    CdnDebugPath = "http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.js",
    CdnSupportsSecureConnection = true,
    LoadSuccessExpression = "window.jQuery && window.jQuery.ui && window.jQuery.ui.version === '1.10.2'"
});

Прочтите следующий блог Скотт Гензельман для более подробной информации.

Ответ 2

Дизайнер VS придирчивы к форматам URI в теге ссылок и будет "исправлять" любые href, которые он не одобряет. Результат не всегда полезен.

В вашем случае проблема заключается в том, что в вашем href отсутствует имя схемы. VS должен прекратить переписывать ваш href, если вы измените свой тег ссылки следующим образом:

<link href="#" onclick="location.href='http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css'; return false;" rel="stylesheet" type="text/css" />

Боковое примечание: после исправления href разработчик может пожаловаться на то, что он не может редактировать таблицу стилей. Я не знаю, почему он делает это с этим конкретным файлом, и я не видел, чтобы это делалось с другим CSS. Просто игнорируйте предупреждение, и таблица стилей должна применяться правильно.