Visual Studio IIS工作正常但在IIS 7中托管脚本时获取错误的URL?

Ban*_*hee 4 javascript asp.net-mvc reference include

嗨,

我有一个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>
Run Code Online (Sandbox Code Playgroud)

从Visual Studio 2010中的内置IIS和主机(IIS7)运行时,此方法正常.但是当在默认网站\ MySite下的我自己的IIS7中部署它时,脚本将获得如下路径:

http://localhost/Scripts/jquery.cascadingDropDown.js
Run Code Online (Sandbox Code Playgroud)

代替 :

http://localhost/myPage/Scripts/jquery.cascadingDropDown.js
Run Code Online (Sandbox Code Playgroud)

为什么这可以在VS IIS和我的主机IIS中工作,但不能在我的本地计算机IIS上工作?

除此之外网页也很好.

Dar*_*rov 7

我在ASP.NET MVC中重复了两个绝对基本的规则:

  1. 永远不要像你那样对网址进行硬编码.

  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>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是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>
Run Code Online (Sandbox Code Playgroud)

嘿,如果您使用的是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>
Run Code Online (Sandbox Code Playgroud)

请注意~/?WebPages 2.0 Url.Content在运行时自动应用它以生成正确的URL.

  • MVC 4提示+1.我会更多地使用它. (2认同)