我希望你們可以幫助我,我的ASP.NET MVC項目有一個奇怪的路由問題。在ASP.NET MVC項目中爲JavaScript調用設置通用路由
當我將該項目從我的本地主機上運行或在服務器上運行時,總體來說一切正常,而它直接在http://myServerName
上部署。當我將應用程序部署到位於不同虛擬目錄下的服務器上的各種環境時,問題就開始了。例如:http://myServerName/QaEnviornment
或http://myServerName/TestEnviornment
問題是,所有對應用程序URL的Javascript調用都忽略了我的環境虛擬目錄並失敗。 例如我的QA服務器上時,我必須做出一個Ajax調用我採取一個標準的方法,如:
var myUrl = '/ControllerName/ActionMethodName/'
$.ajax({url:myUrl,success:function(){Do stuff} })
因爲我的應用程序部署在http://myServerName/QaEnviornment
,當渲染我希望myUrl是http://myServerName/QaEnviornment/ControllerName/ActionMethodName
。相反,它回來as http://myServerName/ControllerName/ActionMethodName
和當然失敗。
爲了解決這個問題,現在我宣佈,包含環境的文件夾名稱的全局JavaScript變量,當我建立JavaScript調用我要記住,總是構建它們的變種myUrl = myGlobalFolderVar + '/ControllerName/ActionMethodName/'
使用全局JavaScript變量的網址解決這個問題對我來說似乎是一個不好的解決方案。是否有任何事情可以讓路由工作正常進行,以便每當進行JavaScript調用時,應用程序運行的任何子文件夾都始終包含在URL中?
只有Javascript代碼是在視圖內部構建的,但這隻會工作,對不對?如果一個腳本存儲在一個包含的外部.js文件中,這不會被使用,是嗎?儘管謝謝你的迴應! – Shenaniganz
是的 - 如果你把它放在一個外部JS文件中,那麼上面的那個函數(它是JS而不是c#)在任何地方都是可用的。你會像其他任何JS函數一樣調用它。注 - >這不會進入document.ready類型處理程序,但是是獨立的。 – Tommy