1. 程式人生 > >asp.net mvc razor佈局頁中a標籤的href的跳轉問題

asp.net mvc razor佈局頁中a標籤的href的跳轉問題

筆者做了一個檔案上傳系統,檔案上傳後,儲存在wwwroot目錄的file資料夾中,並把該檔案的路徑儲存到資料庫中,

如這樣的一個路徑儲存在資料庫:

file/b775f487-0127-41e0-9df8-2a5f1624cd87.jpg


上傳成功後,當在home控制器的index頁面中的a標籤中,直接這樣編寫

          <a href="@filePath">下載</a> 

頁面生成後,連結是

http://localhost:53953/file/b775f487-0127-41e0-9df8-2a5f1624cd87.jpg

完全沒有問題  可以正常訪問並下載,但是在note控制器的Detils的頁面下,我使用同樣也是這樣的a標籤指向檔案

          <a href="@filePath">下載</a> 

可是就不能正常訪問了  生成的連結是

http://localhost:53953/note/Detils/file/b775f487-0127-41e0-9df8-2a5f1624cd87.jpg

也就是說連結中把控制器名和action名也加進去了  ,是無法正常訪問到檔案的,

為什麼home和index不會加進去呢?  因為路由中預設的是控制器是home  預設的檢視是index  所以連結中是不顯示控制器名和檢視名的

那麼,問題出現了  怎麼解決?

方法是使用

@Url.Content(filePath)來取代@filePath

就不管是在什麼控制器下什麼檢視下  連結始終不含有控制器檢視的名稱了

同時 需要注意的是,檔案路徑的儲存格式需要有所變化了,不然也是無法正常連結的  需要已/開頭  如下:

/file/b775f487-0127-41e0-9df8-2a5f1624cd87.jpg