簡體   English   中英

如何在ASP.NET項目中正確引用JavaScript文件?

[英]How to Properly Reference a JavaScript File in an ASP.NET Project?

我有一些引用javascript文件的頁面。

該應用程序存在於虛擬目錄中,即http://localhost/MyVirtualDirectory/MyPage.aspx

所以本地我引用文件如下:

<script src="/MyVirtualDirectory/Scripts/MyScript.js" type="text/javascript"></script>

但是生產設置不同。 該應用程序在生產中作為自己的網站存在,因此我不需要包含對虛擬目錄的引用。 這個問題是我需要修改包含javascript引用的每個文件,所以它看起來如下所示:

<script src="../Scripts/MyScript.js" type="text/javascript"></script>

我嘗試在我的本地設置中以這種方式引用文件,但它不起作用。

我完全錯了嗎? 有人能告訴我我需要做什么嗎?

謝謝

使用ResolveUrl(“〜/”)

<script src="<%=ResolveUrl("~/scripts/myscript.js") %>" type="text/javascript"></script>

〜/將以虛擬或其他方式告訴您應用程序的根目錄

以前的答案似乎假設Scripts目錄始終作為應用程序根目錄的子目錄存在。 如果該假設是正確的,並且如果頁面也在根目錄,那么您的兩個早期標記可以簡單地:

<script src="Scripts/MyScript.js" type="text/javascript"></script>

但是我讀到的第二個例子是Scripts 並不總是應用程序根目錄的子目錄(因為開頭的../會提升一個級別,因此Scripts將成為應用程序根目錄的對等方)。 也就是說,你說第二個例子不起作用。 :-)但如果確實如此,我強烈建議調整一個環境或另一個環境以使相對路徑一致,然后始終使用上述相對路徑。

據我所知,使用ResolveUrl的唯一原因是,如果應用程序中的頁面位於文件夾結構中,並且標記可能出現在根目錄中的頁面中或“子目錄”中的頁面中。 如果是這樣,您可以在兩種情況下使用ResolveUrl ,因此您有一個錨點。 我從不以這種方式創作,我總是確保我知道頁面在層次結構中的位置(如果需要有層次結構)並使用適當的相對路徑作為當前文檔。

您可以使用HttpRuntime.AppDomainAppVirtualPath屬性獲取應用程序的虛擬路徑(如果有),並使用該路徑修復javascript路徑(使用<script>標記中的<%= ...%>等)

您可以在主頁面中進一步添加一個公開該值的全局javascript變量,這樣任何需要知道實際應用程序根目錄的腳本都可以通過這種方式訪問​​它。

MVC5的另一種方式:

1)在布局html視圖文件中,將RenderSection放在需要腳本的位置:

<html><body>
@RenderSection("scripts1", required: false)
</body></html>

請注意,您可以將“Scripts1”更改為您喜歡的任何名稱。

2)在你的視圖html文件中,只需調用“scripts1”,無所謂,用你的路徑和js文件名:

@Scripts1.Render("~/Scripts/MyScript.js")

3)確保MyScript js文件位於項目的Scripts文件夾中。

而已。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM