在设计视图中使用 ASP.NET 时,Visual Studio 2012 SP3 更改链接 href
Posted
技术标签:
【中文标题】在设计视图中使用 ASP.NET 时,Visual Studio 2012 SP3 更改链接 href【英文标题】:Visual Studio 2012 SP3 changing link href when using ASP.NET in design view 【发布时间】:2013-07-10 02:59:53 【问题描述】:我正在使用 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-changing-link-href-when-using-asp-net-in-design-view#details
【问题讨论】:
尝试使用以下设置:工具 -> 选项 -> 文本编辑器 -> html 或工具 -> 选项 -> 文本编辑器 -> xml .... 特别是在杂项类别下。跨度> 对不起,我找不到任何帮助 放href="http://netdna.bootstrapcdn.com/twitter-bo...
会继续吗?
@zeroef 它显然可以在前面使用 http,但是现在当我在源视图中编辑和保存时,我不断收到“无法编辑 >。样式表必须是当前的一部分项目和项目必须是网站或Web应用程序”,这更令人讨厌
【参考方案1】:
使用 ASP.NET 脚本包时,您可以提供可以找到脚本库的 CDN 位置。当您还在本地添加代码时,您将获得能够针对非缩小版本进行调试的好处,而当站点在生产中运行时将使用 CDN 版本。
请参阅following documentation on setting up script bundles on ASP.NET Web Forms。
基本上你需要在 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 for more details的以下博客。
【讨论】:
我真的很感激你所做的,我知道捆绑包,但我的问题是编辑器,我不应该这样做,这是不正常的,如果有一个功能,我不知道是哪个一个就是它。我只是将 if 用于一些教程,它的行为真的很奇怪,还有其他问题,但我不知道如何重现它们。无论如何都要投票,谢谢,但这不是我想要的答案。 这些捆绑和映射技术实际上使编辑器问题消失了,并在 ASP.NET 中提供了更好的体验,这也很好:) 我这样做已经在等待答案,我只是好奇是否有其他人设法复制它,顺便说一句,如果删除 localhost 部分它可以工作,之后这样做很烦人设计视图中的每次编辑。 贴上链接,如果我得到答案我会发布回复【参考方案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 这样做。忽略警告,样式表应该会正确应用。
【讨论】:
谢谢,但正如您在 cmets 中看到的那样,我已经尝试过,而且比目前发生的更烦人以上是关于在设计视图中使用 ASP.NET 时,Visual Studio 2012 SP3 更改链接 href的主要内容,如果未能解决你的问题,请参考以下文章
如何让 Visual Studio 的设计器在 ASP.NET Web 用户控件中正确呈现 CSS?
在 Visual Studio 2019 中使用的 Razor 视图未更新
Visual Studio 2013 ASP.NET MVC 模板智能感知不起作用