2016-11-17 69 views
1

我有一個簡單的MVC網頁,彈出一個對話框,其中包含超鏈接到文件的列表。它們正確地以「file://」作爲前綴,如果將這些鏈接複製到剪貼板並粘貼到瀏覽器窗口中,鏈接將正常工作。但是,從對話內,單擊鏈接的文件將返回...沒有任何內容。爲什麼我不能點擊鏈接從MVC網頁打開文件

什麼也沒有發生。 Firefox,Internet Explorer和Chrome中的行爲完全相同。沒有任何警告,錯誤等

視覺上我的對話是這樣的:

enter image description here

如果我的鏈接的一個「檢查元素」,例如,前一個「JavaScript的筆記。 TXT」,它看起來像這樣:

enter image description here

這是一個有效的超鏈接。如上所述,我可以將鏈接複製到瀏覽器的地址欄中,並且鏈接的文件可以正常打開。我還可以將元素的完整HTML複製到記事本中,包裝在標籤中並保存爲.html文件,並且鏈接工作得很好。這些鏈接在任何瀏覽器中都不起作用。

我在當前顯示Kendo網格中的鏈接。思考這可能是一個問題,我暫時擺脫了網格,並試圖用純HTML顯示它們。同樣的問題 - 點擊鏈接根本沒有結果。

我在這裏打擊更深的東西嗎?就像,我正在使用jquery對話框來顯示列表。 jQuery對話做些什麼來阻止超鏈接工作?

TIA任何幫助。

+0

聽起來像JavaScript的一個錯誤的位實際上是攔截和阻止鏈接點擊。它可能與它在網格內的事實有關。不確定。但JavaScript是唯一解釋這個問題的東西。尋找單擊事件處理程序,尤其是在可能有類似'preventDefault()'的地方。 –

+2

由於安全原因,瀏覽器在默認情況下不允許指向'file:// ...'的鏈接(除非原來的服務頁面本身來自'file://'。要解決這個問題,可以使用' - 允許從文件訪問文件(其他瀏覽器將有其他命令行參數),或者使用MVC和常規的'http:// ...'超鏈接提供文件 – Amy

+0

欲瞭解更多信息,請參閱[Firefox ](http://kb.mozillazine.org/Firefox_:_Issues_:_Links_to_Local_Pages_Don%27t_Work),[Chrome](https://stackoverflow.com/questions/2087894/can-google-chrome-open-local-links), [IE](https://superuser.com/questions/149068/how-to-add-a-local-file-to-trusted-zone-in-ie8) – Amy

回答

0

按照Amy對原始問題的評論,瀏覽器似乎在從通過http檢索的頁面打開時阻止文件://鏈接。我實現的解決方法來自下面鏈接的優秀文章:我在控制器中編寫了一個簡單的操作方法,該方法返回的不是視圖,而是文件,並且更改了超鏈接以通過http調用該控制器方法。奇蹟般有效。

看到:http://rachelappel.com/upload-and-download-files-using-asp-net-mvc/