2011-05-25 150 views
8

我得到了一個.NET MVC3項目,該項目剛剛部署到虛擬目錄中的實際服務器上。我們稱之爲VirtDir。我的JavaScript文件都有像這樣定義的AJAX URL:帶有虛擬目錄的IIS中的AJAX url路由問題

"/Home/Save/" 

這在當地工作正常。

在實際的服務器,即第一個「/」殺死虛擬目錄,所以我得到

"/Home/Save/"代替"/VirtDir/Home/Save/"這顯然失敗。

如果刪除第一個「/」,然後在本地的東西打破,導致定義的URL被附加到當前頁面的URL:如果你在"/Home/Index"頁,AJAX的URL將指向

"/Home/Index/Home/Save"

我的JavaScript是分開的* .js文件,所以我不能真的寫@Url.Content給他們。

任何人都知道這個問題的一個很好的解決方案?

回答

22

您可以添加一些代碼到您的佈局文件或母版頁,在包含JS文件之前將根目錄寫出到JS變量。然後,您可以使用該變量在您的JS文件中構建路徑。

在剃刀:

<script type="text/javascript"> 
    var rootDir = "@Url.Content("~/")"; 
</script> 
<script src="@Url.Content("~/Scripts/MyScript.js")" type="text/javascript"></script> 

然後,你可以建立自己的網址在你的文件是這樣的:

var myurl = rootDir + "Home/Save/"; 
+1

感謝。我實際上最終做了類似的事情。 – Dimskiy 2011-05-26 19:20:44

+0

hello @Dimskiy,你能評論你最終做了什麼嗎? – 2017-02-24 21:20:29

+0

@LexyFeito這是在2011年... – Dimskiy 2017-03-15 19:06:05