2013-04-15 34 views
2

我創建了一個Asp.Net MVC互聯網Aplication和的家庭控制器的我的索引視圖我有這個的Javascript在asp.net MVC ...初級問題

This is the first line, before the script results. 

<script type="text/javascript" src="~/Script/Teste.js"></script> 
<br /> 

This line comes after the script. 

在我Teste.js我有這個:

document.write("Yes! I am now a JavaScript coder!"); 

但沒有任何反應。如果我更改src屬性並將一些隨機名稱src =「aaaa」,儘管「aaaa」不存在,我在運行時不會出現錯誤。

+1

你的「Teste.js」位於哪裏?嘗試使用相對路徑或更好的@ Url.Content。 – gustavodidomenico

+4

嘗試'src =「@ Url.Content(」〜/ Script/Teste.js「)」'以便正確解析路徑。 –

+0

我用Url.Content嘗試過,仍然不能工作 –

回答

3

編輯

同時,再次檢查你的路徑。 VS中的默認MVC模板創建一個名爲Scripts的文件夾,而不是Script。 (「~/Scripts/teste.js」)

根據以下評論,這不是問題的根源,但在其他情況下,可以輕鬆地咬新的JavaScript開發人員。

最有可能的是,您的document.write函數在文檔準備好之前觸發,導致沒有任何事情發生。嘗試在Teste.js以下文件

window.onload = function() 
{ 
    document.write("Yes! I am now a JavaScript coder!"); 
    //or even better as a test 
    alert("This alert was called"); 
} 

檢查你的頁面的源代碼中,也可能是文件被寫入,你就不能看到它因標記/頁的造型。

至於你的第二個問題,如果你引用一個不存在的文件,將不會引發'運行時異常'。如果您使用Firebug或Chrome的開發人員工具等工具,則應該看到http://siteDomain/Scripts/aaaa.js的請求,其響應爲404,未找到。

+0

'document.write'可以存在於主體中並且在沒有確保DOM完全加載的情況下正常工作。 [看到這個小提琴。](http://jsfiddle.net/NRCSk/)你沒有使用'document.write'的DOM,你正在創建它。 – Travis

+0

感謝@Travis - 我知道這是真實的,但希望確保OP端沒有一些奇怪的問題。這通常會讓大多數初學者開發人員用JS。 :) – Tommy

+0

現在它的工作....問題是在路徑....它的「腳本」,而不是「腳本」.... Thx的幫助 –

0

您通常應該避免使用document.write(),除非您絕對必須使用它由於某種原因...我不認爲我遇到過這種情況,並寫了很多Javascript。

試試這個:

1)把這個在你的HTML:

<script src="/scripts/teste.js"></script> 

2)把這個在您的JS:

alert('Yes! I am now a JavaScript coder!'); 

3)打開Chrome,因爲它可以很容易查找開發工具中的外部資源加載並打開「網絡」選項卡(單擊右上角的工具>開發人員工具,網絡選項卡上的菜單按鈕)。

4)運行您的項目,並在Chrome瀏覽器窗口中的瀏覽器中複製/粘貼URL,然後回車。

當你的頁面加載的2兩件事會發生:

A)你會得到你想要的警告框或

B)你會發現爲什麼它不加載,因爲「網絡」標籤會顯示瀏覽器嘗試獲取teste.js並以某種方式失敗,例如404,這表明您的路徑中存在拼寫錯誤,或腳本不在您認爲的位置等等。

0

在文檔的最後放置以下行。之後不應該有任何東西。然後嘗試加載頁面。

<script type="text/javascript" src="~/Script/Teste.js"></script> 

此外,嘗試按F12加載頁面以查看源代碼。檢查你的腳本是否存在。

0

在MVC中,代字號用於引用應用程序的根URL。但是,它通常不能解析這些信息。如果你寫:

<script src="~/Script/Teste.js"></script> 

查找將失敗,因爲~在HTML中沒有任何意義。如果您使用剃鬚刀作爲您的視圖引擎(不ASPX),你需要用該呼叫在Url.Content像這樣:

<script src="@Url.Content(~/Script/Teste.js)"></script> 

這樣做將確保有效的URL提供給瀏覽器。

考慮到這一點,您需要檢查您的文件名和文件夾名稱是否正確。您還需要確保該文件正在與您的應用程序一起部署。您可以在解決方案資源管理器中選擇文件時打開屬性面板,然後按F4