在Visual Studio创建的骨架ASP.MVC上,我在Site.Master的head部分添加了一个脚本标记:
<script src="~/Scripts/jquery-1.3.2.js" type="text/javascript"></script>
这会导致页面无法呈现。在我的例子中,我有一个自定义的controllerfactory,基本方法GetControllerInstance引发了一个异常:
路径控制器 '/ ~/Scripts/jquery-1.3.2.js'不能 被发现或者没有实现 一个IController。
对src使用“../../Scripts/jquery-1.3.2.js”也不起作用。
唯一可行的方法是:
<script src="<%= Url.Content("~/Scripts/jquery-1.3.2.js") %>"
type="text/javascript"></script>
然后当然,intellisense对jquery不起作用。所以我不得不求助于添加黑客:
<% if (false) { %>
<script src="~/Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<% } %>
修补程序应该根据ScottGu
修复上面一行是样式表的链接:
<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
出于某种原因,这很好。无论我使用虚拟路径还是相对路径,我都可以看到页面上生成的URL是“Content / Site.css”。 jquery url也不能这样说。 jquery链接按原样返回 - 在包含“〜”或“../..".
的页面上返回jquery url有人可以告诉我发生了什么事吗? 感谢
更新
感谢评论者,我记得〜是一个asp.net的东西。我唯一的问题是为什么样式表不存在相同的问题?上面的链接标签,例如,我可以放〜或相对路径,它总是出来正确。魔术在哪里?
答案 0 :(得分:1)
你试过没有~
:
<script src="/Scripts/jquery-1.3.2.js" type="text/javascript"></script>
~
字符仅由指示网站根目录的服务器端处理脚本使用。原因是:
<script src="<%= Url.Content("~/Scripts/jquery-1.3.2.js") %>" type="text/javascript"></script>
作品是因为它被翻译成:
<script src="/Scripts/jquery-1.3.2.js" type="text/javascript"></script>
答案 1 :(得分:0)
标准HTML中不支持“〜” - 它是一个ASP.NET快捷方式。所以你要么按照你在OP中指定的方式和智能感知的黑客来做,要么就像Darin指定的那样,但是你失去了自动获取你的VRoot的能力。
答案 2 :(得分:-1)
我不确定,但也许MVC很聪明,不能在路由中包含CSS文件。