嗨,
我有一个 ASP.NET MVC 站点,我在母版页中使用以下链接
<script type="text/javascript" src="../../../Scripts/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="../../../Scripts/jquery-ui-1.8.11.custom.min.js"></script>
<script type="text/javascript" src="../../../Scripts/jquery.cascadingDropDown.js"></script>
<script type="text/javascript" src="../../../Scripts/jquery.maskedinput-1.2.2.js"></script>
当从Visual Studio 2010中的内置IIS和主机(IIS7)运行时,这工作正常。但是当在默认网站\我的网站下将它部署到我自己的IIS7中时,脚本将获得如下路径:
http://localhost/Scripts/jquery.cascadingDropDown.js
而不是:
http://localhost/myPage/Scripts/jquery.cascadingDropDown.js
为什么这在 VS IIS 和我的主机 IIS 中有效,但在我的本地计算机 IIS 上不起作用?
除此之外,网页符文很好。
我在MVC中重复 ASP.NET 绝对基本的规则:
-
切勿像以前那样对网址进行硬编码。
-
在处理 ASP.NET MVC 应用程序中的 url 时,请始终使用 Url 帮助程序。
我一直在无数次类似的问题中重复这一无数次,但我仍然看到人们在硬编码。
因此,如果您使用的是剃刀:
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.8.11.custom.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.cascadingDropDown.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.maskedinput-1.2.2.js")"></script>
如果您使用的是 WebForms 视图引擎:
<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery-1.4.4.min.js") %>"></script>
<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery-ui-1.8.11.custom.min.js") %>"></script>
<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery.cascadingDropDown.js") %>"></script>
<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery.maskedinput-1.2.2.js") %>"></script>
嘿,如果您使用的是 ASP.NET MVC 4(Razor 2.0),那么有一个巧妙的技巧:
<script type="text/javascript" src="~/Scripts/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="~/Scripts/jquery-ui-1.8.11.custom.min.js"></script>
<script type="text/javascript" src="~/Scripts/jquery.cascadingDropDown.js"></script>
<script type="text/javascript" src="~/Scripts/jquery.maskedinput-1.2.2.js"></script>
注意到~/
了吗?WebPages 2.0 在运行时自动对其应用Url.Content
以生成正确的 URL。