2010-02-12 24 views
0

在骨架ASP.MVC的Visual Studio創建,我的腳本標記添加到我的頭一節中的Site.Master:在ASP.NET MVC,添加腳本參考拋出異常

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

那當然,智能感知不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在包含「〜」或「../ ..」的頁面上返回。

有人能告訴我發生了什麼事嗎? 感謝

UPDATE:

感謝提意見,我記得〜是一個asp.net的事情。我唯一的問題是爲什麼樣式表不存在相同的問題?上面的鏈接標籤,例如,我可以把〜或相對路徑,它總是出來的權利。魔法在哪裏?

回答

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

的 「〜」 是不是標準的HTML中支持 - 這是一個ASP.NET快捷。所以你要麼按照你在OP中指定的方式來執行,要麼在intellisense中進行攻擊,要麼按照Darin的指定,但是你失去了自動拾取VRoot的能力。

+0

謝謝 - 我已經忘記了〜作爲服務器的東西! – 2010-02-12 18:40:12

-1

我不確定,但也許MVC足夠聰明,不會在路由中包含CSS文件。

+0

Doh,我的第一個「答案」,我得到一個消極的。這個網站真的很棒。 – WVDominick 2010-02-12 23:59:56