Mvc示例之六---bs軟件的路徑

相對路徑與絕對路徑

      相對路徑是相對於文件或文件夾當前路徑而言,絕對路徑則是從路徑的根部到達目標文件。

  舉個例子:

  C:\Windows\Microsoft.NET\Framework文件夾下面有一個文件:sbs_microsoft.jscript.dll,而C:\Windows\Microsoft.NET\Framework\v3.5文件夾下面有一個文件csc.exe。

      我們通過sbs_microsoft.jscript.dll所在的文件夾找到csc.exe所在的文件夾可以有相對路徑與絕對路徑兩種方式。如果用相對路徑C:\Windows\Microsoft.NET\Framework\v3.5這個文件夾則應該表示爲:.\v3.5,絕對路徑則表示爲C:\Windows\Microsoft.NET\Framework\v3.5。理解相對路徑時要找一個參照路徑,而絕對路徑則不必。在此,我們的參照路徑是:C:\Windows\Microsoft.NET\Framework。

      描述相對路徑是有兩個概念很有用,當前路徑與父路徑。當前路徑用句點”.”來表示,父路徑則用兩個句點”..”表示。如上邊實例,相對於C:\Windows\Microsoft.NET\Framework\v3.5,C:\Windows\Microsoft.NET\Framework\路徑用相對路徑表示爲..\。也可以表示爲.\..\,.\省略是可以的。那麼,相對於C:\Windows\Microsoft.NET\Framework\v3.5路徑C:\Windows\路徑表示爲..\..\..\。第一層父路徑到C:\Windows\Microsoft.NET\Framework(..\),第二層到C:\Windows\Microsoft.NET(..\..\),第三層到C:\Windows(..\..\..\)。

       絕對路徑與相對路徑的用處:既然絕對路徑理解起來簡單,那麼爲什麼要用相對路徑呢?因爲程序的運行環境是變動的。比如某個程序原來在c:\temp\abc這個路徑下運行,他要打開c:\temp\abc\a.txt。如果用絕對路徑,要用c:\temp\abc\a.txt表示。如果我現在把程序拷貝到了c:\temp2,那麼a.txt的絕對路徑就變成了c:\temp2\a.txt。這個時候是否要更改程序呢?有一種方法是找到程序的運行路徑。另一種方法則可以直接用行對路徑 a.txt或者.\a.txt。豈不是很簡單?

BS軟件路徑

在BS軟件中也有絕對路徑與相對路徑的概念。在Asp.net中要表示根路徑有兩個不同的概念:

“/”與”~/”。這兩個寫法有什麼區別呢?

/ 表示網站的根路徑

~/ 表示應用程序的根路徑

我們架設如下一個網站:

圖一、IIS網站

     對於admin應用程序,假設他的主頁是Default.aspx,那麼該文件的絕對路徑是

http://localhost/admin/Default.aspx,用 “/”表示http://localhost “~/”則表示http://localhost/admin  。要表示文件,需要用這兩個根路徑來表示。如上述Default.aspx可以表示爲“~/Default.aspx”或者”/admin/Default.aspx”。如果我們要表示圖中admin應用程序下面的文件最好用”~/”這個根路徑。而如果我們要表示Django這個應用程序或者根網站下面的文件就要用“/” 這個根路徑。

    而如果admin 這個應該程序的文件夾下面的文件夾 Content下面有 css 與 images 這兩個文件夾如下圖:

 

圖二、文件夾示例

       假設我們在/admin/Content/css下面有一個文件叫做Sites.css文件,他要引用images文件下面的圖片 abc.gif應該怎樣寫呢?

可以這樣寫:../images/abc.gif 。對這個路徑解析一下:.當前路徑爲/admin/Content/css。../表示./的上層路徑 /admin/Content ;../Images/ 表示/admin/Content/images,最後填寫上文件名:abc.gif。

        最後總結一下,在文件中引用其他文件,一定相對於本文件所在的路徑;即使這個文件被其他文件應用。(此段錯誤)

       上次發佈本博客時,出現了錯誤。其實css文件被認爲是一個獨立的文件,而js文件則是一個引入文件。因此css文件引用其他文件時,路徑相對於css文件所在路徑來引用。而js文件在寫其他文件路徑時,則是相對於aspx等主文件路徑而言。比如Sites.css可能被Default.aspx引用,那麼Sites.css要引用圖片文件也是相對於sites.css所在的路徑。在此例中,js寫文件路徑時,要相對於Default.aspx所在路徑進行引用。

       上面的abc.gif用絕對路徑怎麼表示:/admin/Content/images/abc.gif  ~/Content/images/abc.gif。

Mvc路徑的特殊之處

    在mvc中應用~/相對路徑時,需要進行一下轉換

如下:

<script  src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")"   type="text/javascript"></script>

或者可用用

<script    src="@Href("~/Scripts/jquery-1.7.2.min.js")"   type="text/javascript"></script>

 

    這兩種寫法都是可以的。

    而Mvc在表示一個action方法的路徑時可以用兩種方式。

   如果兩個頁面在同一個Controller下面,可以用@Url.Action(“Actionname”)  表示。而如果兩個頁面不在同一個controller下面,則要用@Url.Action(“actionname”,”controller name”)表示了。

好了,本節就講到這裏。Mvc示例系列就講完了。
發佈了27 篇原創文章 · 獲贊 20 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章