asp.net mvc razor佈局頁中a標籤的href的跳轉問題
阿新 • • 發佈:2019-02-03
筆者做了一個檔案上傳系統,檔案上傳後,儲存在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