4

你好,

我有一个 ASP.NET MVC 站点,我在 MasterPage 中使用以下链接

<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 下的 Default Web Site \ MySite 部署它时,脚本将获得如下路径:

http://localhost/Scripts/jquery.cascadingDropDown.js

代替 :

http://localhost/myPage/Scripts/jquery.cascadingDropDown.js

为什么这在 VS IIS 和我的主机 IIS 中有效,但在我的本地计算机 IIS 上无效?

除此之外,网页运行良好。

4

1 回答 1

7

我在 ASP.NET MVC 中重复 2 条绝对基本的规则:

  1. 永远不要像以前那样对 url 进行硬编码

  2. 在 ASP.NET MVC 应用程序中处理 url 时始终使用 Url 助手。

我已经在无数类似的问题中重复了无数次,但我仍然看到人们进行硬编码。

因此,如果您使用的是 Razor:

<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。

于 2012-06-22T10:03:18.410 回答