13

我正在使用 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="http://localhost:50309/netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" runat="server" rel="stylesheet" />

这变得非常烦人。

有谁知道如何禁用此功能?

我还想指出,我已经安装了 Productivity 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="http://localhost:50309/netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" />(端口可能会有所不同:D)

更新 2: Microsoft 错误报告连接链接

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

4

2 回答 2

3

使用 ASP.NET 脚本包时,您可以提供可以找到脚本库的 CDN 位置。当您还在本地添加代码时,您可以获得能够针对非缩小版本进行调试的好处,而当站点在生产中运行时将使用 CDN 版本。

请参阅以下有关在 ASP.NET Web 窗体上设置脚本包的文档

基本上你需要在 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'"
});

阅读以下Scott Hanselman 的博客了解更多详情

于 2013-07-11T19:29:09.673 回答
2

VS 设计者对链接标签中的 URI 格式很挑剔,它会“修复”它不认可的任何 href。结果并不总是有用的。

在您的情况下,问题是您的 href 缺少方案名称。如果您像这样更改链接标签,VS 应该停止重写您的 href:

<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" type="text/css" />

旁注:修复 href 后,设计者可能会抱怨它无法编辑样式表。我不知道为什么它对这个特定的文件这样做,而且我还没有看到它对其他 CSS 这样做。只需忽略警告,样式表就应该正确应用。

于 2013-07-29T03:10:56.900 回答