2012-07-23 24 views
-1

我在大型MVC2應用程序中遇到了一些有點邊緣案例問題。最初,我有一個主視圖,它將在加載時加載部分視圖,其中包含鏈接。我有一個本地工作環境,它在項目設置頁面中使用空的虛擬路徑設置,並且一個臨時環境(爲了更好地反映多應用程序生產環境)具有特定於應用程序的虛擬路徑。 Everythign在兩者上都運行良好。最近,我有理由將部分視圖加載從頁面加載切換到異步。沒有其他改變。鏈接繼續在本地運行,但是當移動到分段時,忽略添加特定於應用程序的路徑設置,導致所有鏈接斷開。我能夠找到一種解決方法,基於使用更徹底的地址,但我覺得必須有某種配置設置的地方,我錯過了可以解決這個問題。在部分視圖中異步加載時,mvc2中的鏈接停止正確地遵循虛擬路徑

  • 包含鏈接的局部視圖必須到位:

    更清晰(如我知道前述可能有點不清楚),僅當滿足以下全部真會發生此特定錯誤由一個asych獲取調用和jquery .html()函數。當它由MVC直接加載到頁面中時,一切正常。

  • 必須位於虛擬路徑設置爲非空虛擬路徑的服務器上。這裏的問題來自於不從虛擬路徑設置追加字符串。事實上,如果您手動在生產的鏈接的適當位置輸入虛擬路徑,它們將正常工作。
  • 至少就部分視圖調用而言,它的格式必須是PartialView("partialViewName", dataObject)而不是PartialView("~/Areas/appName/Views/controllerName/partialViewName.ascx", dataObject)。以較長的格式交換確實有效。

誠然,我可以想出通過試錯某種方式在內部鏈接交換較長的名字,以及和擁有一切或多或少的工作,但它不是一個非常乾淨的解決方案,我可能需要在未來的其他地方再次做同樣的事情,我覺得在那裏必須有更好的答案。無論出於何種原因,PartialView()調用似乎都無法執行某種類型的鏈接按摩,因此View()調用(包含原始非同步版本中的所有內容)正在自動處理。有沒有人知道我可以做些什麼來異步告訴partialView()應用基地View()是相同的虛擬路徑?

回答

0

我發現了答案。似乎異步服務的部分視圖中的相對鏈接基於.post()用於調用它們的鏈接 - 並且至少在某些情況下,MVC設法對郵政調用比對它們進行的鏈接更寬容。更改獲取呼叫地址以正確覆蓋虛擬路徑可修復它。